1

因此,出于不同的原因,我很难尝试使用这两个元素中的任何一个。首先,我将描述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从一个名为 types 的列表中填充,当sj:select我在我的控制器上调用一个名为 的函数的更改值时getNewList,这将更改使用我的复选框列表的列表,但是如何刷新复选框列表。

您可以注意到我可以通过使用 a 来解决这个问题sj:checkboxlist,我知道它可以工作,但是如果我这样做,那么当我尝试加载通过 Integer array 检查idsType的复选框时,复选框将不会被选中。例如,如果我有一个这样的整数数组:

idsType = { 2, 3 }

我有一个arrayOfIds包含 5 个元素的列表,然后当我使用s:checkboxlist5 个复选框时,将显示第二个和第三个复选框。

但是,如果sj:checkboxlistsj:select使用s:checkboxlist.

对于如何解决这个问题,我真的很迷茫,如果有人可以提供帮助,将不胜感激。

4

1 回答 1

1

要回答第一个问题,您当然需要使用 JavaScript 来更新复选框列表——标准<s:checkboxlist>完全不知道 Ajax。您需要通过绑定到由sj:select.

插件 wiki(假设这是您正在使用的插件,实际上有几个)有一个页面讨论如何处理主题中的 JSON 结果

The <sj:checkboxlist> can reload by listening to topics; there should be no issue handling multiple items in the list; you may need to provide additional details regarding what you tried, and what went wrong (if anything, for example, check the JavaScript console).

于 2011-10-31T17:57:02.470 回答