Struts2:Radiobutton,Iterations和List麻烦

时间:2009-11-09 13:07:00

标签: java jsp collections struts2

我有一个复杂的问题,我希望能够清楚地解释它......

我有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:

问题在于,当我选择收音机时,因为列表对所有人来说都是唯一的,所以选择会排除其他人......

我需要在第二个迭代器上限制这个排除。

谢谢!

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等以获得提交的价值。