Webから隠しCheckbox Fieldを保存した際にTextになる障害 | Lotus Notes/Domino (R) をこよなく愛して。。。。

Webから隠しCheckbox Fieldを保存した際にTextになる障害

Web ApplicationでCheckbox FieldのText List(複数値)が、保存後にText(単一値)に変わってしまうという障害です。

Domino 9.0以降でこの問題は発生しますので、Domino 9.0.xにVersion Upしてから問題が発生したという場合は、この問題に該当する可能性が高いです。

Domino 9.0以降では、CheckboxなどのText List Fieldの選択肢として、カンマ(",")を含む値が許されるように変更が行われました。

例えば、Checkboxの選択肢として、"abc, def"というような値を設定出来るというものです。

しかし、この仕様変更により、副作用が発生しています。

発生条件は以下となります。

1) Webから文書を保存するApplicationであること
2) Checkbox Fieldが複数値の値を指定できる状態になっていること
3) Checkbox Fieldが文書の状態によって非表示制御されていること
4) Checkbox Fieldが非表示の状態の時にWeb Clientから保存処理が実行されること

この条件の場合に、Checkbox FieldのText List(複数値)がText(単数値)に変換され、保存されてしまうというものです。

例えば、Checkboxに"a","b","c"という値が設定されていた場合で、このFieldが保存時に非表示にされていて、Web Clientから保存すると、"a, b, c"という値になって保存されてしまいます。
この問題はNotes Clientから利用した場合は発生しません。

Web Applicationで、入力時には編集可能なCheckbox Fieldを表示して、Userが選択肢をチェックして保存した際には問題はありませんが、この文書を別のUserが処理する際に、編集可能なCheckbox Fieldを非表示にして、表示用の計算結果FieldでCheckboxで選択されている内容を表示するような制御を行っている場合に発生しますので、承認処理などを伴うWorkflow Applicationで発生する場合が多い問題です。

IBMのDomino 9.0 Fix Listにこの修正の記述がありますので、参照頂ければと思います。

ここに記載されているように、Notes.iniに

DominoSingleValueListField=0

を設定して、Domino ServerをRestartすると、パラメーターが有効になり、Dominoの動作が8.5.x以前の動作に戻り、問題を解消することが可能です。

但し、このパラメーターを設定すると、Domino 9.0以降でサポートされた選択肢に","を含む値を使うことが出来なくなりますので、ご注意ください。

両立させたい場合には、Web Application側で対応する必要があります。

例えば、WebQuerySave Agentで保存されるCheckbox Fieldの値がTextになっている訳ですから、LotusScriptで","を分離記号としてSplitしてからTrimしてしまうことで問題を回避できます。
Splitだけでは、値の先頭にSpaceが入ってしまうことがありますので、Trimすることが重要です。

皆さんも、Domino 9にVersion UpしてからWeb Applicationの動きがおかしいという現象に出会った場合は、この問題に該当しないかを調査してください。