【发布时间】:2011-10-31 17:37:42
【问题描述】:
因此,出于不同的原因,我很难尝试使用这两个元素中的任何一个。首先,我将描述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 来解决这个问题,我知道它可以工作,但是如果我这样做了,那么当我尝试加载通过整数数组idsType 检查的复选框时,复选框将不会t 得到检查。例如,如果我有一个这样的整数数组:
idsType = { 2, 3 }
我有一个包含 5 个元素的列表 arrayOfIds,然后当我使用 s:checkboxlist 时,将显示 5 个复选框,并选中第二个和第三个复选框。
但如果我使用sj:checkboxlist 执行此操作,则只会选中第一个复选框,并且复选框将根据sj:select 值动态更改,当我使用s:checkboxlist 时不会发生这种情况。
我真的很困惑如何解决这个问题,如果有人可以提供帮助,将不胜感激。
【问题讨论】:
标签: jquery struts2 controller checkboxlist checked