2009-11-09 4 views
0

У меня есть сложная проблема, и я надеюсь, что это понятно ...Struts2: Radiobutton, Iterations и List problem

У меня есть 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: 

Проблема в том, что, когда я выбираю радио, потому что список уникальный для всех, выбор исключает другие ...

Мне нужно ограничить это исключение n на втором итераторе.

Спасибо!

ответ

1

К точке: для отдельных групп радиокнопок, вы должны дать каждому из них разныхимени.

Я не делаю Struts, но в теории, заменяя

name="provaRadio1" 

по

name="provaRadio1${counterS.index}" 

должен делать.

Чтение/интерпретация сгенерированного источника HTML (открытая страница в браузере, rightclick, view source) также должны дать много нового.

+1

я решил с помощью .. Это решение, которое я нахожу: domandeCheckbox - это список строк, содержащих значение listKey. –

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> 

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

В вашем действии вам придется объявить provaRadio1, provaRadio2 и т. Д., Чтобы получить представленное значение.