Используя sj: выберите с s: checkboxlist - PullRequest
1 голос
/ 31 октября 2011

Поэтому у меня возникли проблемы при попытке использовать любой из этих двух элементов по разным причинам.Сначала я опишу, что происходит с s:checkboxlist.

Когда значение на sj:select изменится, я хочу заполнить список на моем контроллере для использования на моем s:checkboxlist, должен ли я использоватьJavaScript?Сначала я предполагал вызвать функцию javascript для параметра sj:select onchange="", а затем функцию 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 idsType, флажки не будут проверены.Например, если у меня есть массив Integer, подобный этому:

idsType = { 2, 3 }

, и у меня есть список arrayOfIds с 5 элементами, тогда, когда я использую s:checkboxlist, будут показаны 5 флажков, а второй ибудет установлен третий флажок.

Но если я сделаю это с помощью sj:checkboxlist, то будет установлен только первый флажок, а также флажки изменятся динамически в соответствии со значением sj:select, что не произойдеткогда я использую s:checkboxlist.

Я действительно теряюсь в том, как я могу решить эту проблему, если кто-то может помочь, она будет очень признательна.

1 Ответ

1 голос
/ 31 октября 2011

Чтобы ответить на первый вопрос, конечно, вам нужно использовать JavaScript для обновления списка флажков - стандарт <s:checkboxlist> полностью не знает Ajax. Вам нужно будет сделать это вручную, связавшись с темой, опубликованной sj:select.

Вики-плагин (при условии, что это плагин, который вы используете, на самом деле их несколько) имеет страницу, обсуждающую , как обрабатывать результаты JSON в теме .

<sj:checkboxlist> можно перезагрузить, прослушав темы; не должно быть проблем с обработкой нескольких элементов в списке; вам может потребоваться предоставить дополнительные сведения о том, что вы пытались и что пошло не так (например, проверьте консоль JavaScript).

...