我有一个复杂的问题,我希望能够清楚地解释它......
我有2个清单。在我的jsp上,我有一个嵌套迭代,有两个列表,里面有一个标签。
这是代码:
<s:iterator value="listSurveyToRender" var="s" status="counterS">
<s:iterator value="listSurveyValuesToRender" var="sv" status="counterSv" >
<s:if test="%{#s.idsurvey==#sv.survey.idsurvey}">
<td><s:radio list="sv" listValue="valoreTesto" name="provaRadio1" />
</s:if>
</s:iterator>
这是jsp的结果:
Question 1: (first iterator)
resp 1: (second iterator)
resp 2:
resp 3:
Question 2: (first iterator)
resp 1: (second iterator)
resp 2:
问题在于,当我选择收音机时,因为列表对所有人来说都是唯一的,所以选择会排除其他人......
我需要在第二个迭代器上限制这个排除。
谢谢!
答案 0 :(得分:1)
要点:要分隔单选按钮组,您需要为它们分别提供不同的 名称。
我不做Struts,但在理论上,替换
name="provaRadio1"
通过
name="provaRadio1${counterS.index}"
应该这样做。
阅读/解释生成的HTML源代码(浏览器中的打开页面,右键单击,查看源代码)也应该提供很多新的见解。
答案 1 :(得分:0)
可能会这样做:
<s:set name="x" value="0"/>
<s:iterator value="listSurveyToRender" id="s" status="counterS">
<s:set name="x" value="%{x + 1}"/>
<s:iterator value="listSurveyValuesToRender" id="sv" status="counterSv" >
<s:if test="%{#s.idsurvey==#sv.survey.idsurvey}">
<td><s:radio list="sv" listValue="valoreTesto" name="provaRadio%{x}" />
</s:if>
</s:iterator>
</s:iterator>
我没有机会测试这个,但基本上每个外部迭代都会增加x,x将用于为每个组的单选按钮创建一个唯一的id。
在你的行动中你必须申报provaRadio1,provaRadio2等以获得提交的价值。