1

そのため、さまざまな理由でこれら 2 つの要素のいずれかを使用しようとすると問題が発生します。まず、 で何が起こるかを説明しますs:checkboxlist

変更の値をsj:selectコントローラのリストに入力して で使用したいs:checkboxlist場合、javascript を使用する必要がありますか? 私の最初の推測では、sj:select onchange=""パラメータでjavascript関数を呼び出し、次にjavascript関数でリフレッシュしs:checkboxlistて、新しいリストを使用してデータを入力することでした。

たとえば、次のようなものがある場合sj:select:

<s:url id="urlGetNewList"
    action="mycontroller!getNewList" />
<sj:select href="%{urlGetNewList}" id="myselect"
    onChangeTopics="reloadList"
    onCompleteTopics="reloadList"
    name="model.idType" list="types"
    listKey="idType" listValue="nameType"
    emptyOption="false" headerKey="-1"
    headerValue="select a value"
    formIds="frmMyForm" />

そして私s:checkboxlistは持っています:

<s:checkboxlist name="arrayOfIds" list="idsType"
                listKey="id" listValue="name"
                theme="vertical-checkbox" />

したがって、s:selectタイプと呼ばれるリストから値が取り込まれます。sj:select変更の値が という名前のコントローラーの関数を呼び出すとgetNewList、チェックボックスリストを使用するリストが変更されますが、チェックボックスリストを更新するにはどうすればよいですか。

を使用してこれを解決できることがsj:checkboxlistわかりますが、それが機能することはわかっていますが、そうすると、 Integer array を介してチェックされるチェックボックスをロードしようとすると、チェックボックスがチェックされidsTypeません。たとえば、次のような整数配列があるとします。

idsType = { 2, 3 }

arrayOfIds5 つの要素を持つリストがある場合、 を使用するとs:checkboxlist、5 つのチェックボックスが表示され、2 番目と 3 番目のチェックボックスがオンになります。

しかし、 を使用してこれを行うsj:checkboxlistと、最初のチェックボックスのみがチェックされ、sj:select値に応じてチェックボックスが動的に変化しますs:checkboxlist

どうすればこの問題を解決できるか本当に迷っています。誰かが助けてくれれば大歓迎です。

4

1 に答える 1

1

最初の質問に答えるには、もちろん JavaScript を使用してチェックボックス リストを更新する必要があります。標準<s:checkboxlist>は Ajax をまったく認識していません。によって発行されたトピックにバインドして、手動で行う必要がありますsj:select

プラグイン wiki (これがあなたが使用しているプラ​​グインであると仮定すると、実際にはいくつかあります) には、JSON の結果を処理する方法について説明しているページがあります。

<sj:checkboxlist>、トピックをリッスンすることでリロードできます。リスト内の複数のアイテムを処理しても問題はありません。何を試したか、何が問題だったかについて、追加の詳細を提供する必要がある場合があります (何かあれば、たとえば JavaScript コンソールを確認してください)。

于 2011-10-31T17:57:02.470 に答える