struts2 Как прочитать значение итератора из JSP для действий

1

Я новичок в java и struts2, пожалуйста, помогите. из действия, которое я прочитал и обработаю список, созданный в jsp

моя проблема в том, как мне получить доступ к данным из действия итератора?

JSP PAGE

<s:iterator value="settoriList" var="myObj">
<tr>
<td>
   <s:if test="#myObj.selected == 1">
      <s:checkbox name="selected"   fieldValue="%{cdSettore}" checked="checked"/>
      <s:property value="cdSettore" />
   </s:if>
   <s:if test="#myObj.selected == 0">
      <s:checkbox name="selected"  value="false" fieldValue="%{cdSettore}"  />
      <s:property value="cdSettore" />
   </s:if>
</td>
<td><s:property value="dsSettore" /></td>
<td><s:property value="dtIniVali" /></td>
<td><s:property value="dtFineVali" /></td>
</tr>
</s:iterator>
 </table>
  <s:hidden name="cdConve" />
  <s:hidden name="process"   value="saveSettori"/>
</s:form>

Вот как я пытаюсь получить доступ к данным

private List<GenSettori> settoriList;

public List<GenSettori> getSettoriList() {
    return settoriList;
}
public void setSettoriList(List<GenSettori> settoriList) {
    this.settoriList = settoriList;
}

private String[] selected;

public String[] getSelected() {
    return selected;
}
public void setSelected(String[] selected) {
    this.selected = selected;
}

--------
   settoriList = new ArrayList<GenSettori>();
   System.out.println("list sett: "+settoriList);
    for(int i=0;i<getSettoriList().size();i++){
     if (getSelected()[i]!=""){
         System.out.println("not selected "+getSelected()[i]);
  }      
   }

---------

Моя страница формируется выбранным полем, описанием и датой.

Заранее благодарю за любую помощь

  • 0
    предоставить код для объекта GenSettori
  • 0
    и что такое cdSettore , dsSettore ... дайте некоторое объяснение, а также укажите имена ваших файлов, пожалуйста
Показать ещё 1 комментарий
Теги:
jsp
iterator
struts2

1 ответ

0
Лучший ответ

вы можете получить массив строк из jsp в класс действия, следуя строкам

В jsp

<s:hidden name="cdSettore" value="%{cdSettore}"></s:hidden>

Если вы хотите, вы можете использовать

<s:if test="#myObj.selected == 0">
   <s:hidden name="cdSettore" value="%{cdSettore}"></s:hidden>
</s:if>

не выбирать один раз

в классе действий

private String[] cdSettore;

public void setCdSettore(String[] cdSettore) {
    this.cdSettore = cdSettore;
}
public String[] getCdSettore() {
    return cdSettore;
}

for(int i=0;i<getCdSettore().length;i++){
    System.out.println("not selected :"+getCdSettore()[i]);
} 

Или вы можете это сделать

В jsp

<s:hidden name="cdSettore" value="%{cdSettore}"></s:hidden>
<s:if test="#myObj.selected == 1">
  <s:checkbox name="selected" fieldValue="%{cdSettore}" checked="checked"/>
  <s:property value="cdSettore" />
</s:if>
<s:if test="#myObj.selected == 0">
  <s:checkbox name="selected"  fieldValue="%{cdSettore}"  />
  <s:property value="cdSettore" />  
</s:if>     

В классе действий

  for(int i=0;i<getCdSettore().length;i++){
        int flag=0;
        for(int j=0;j<getSelected().length;j++){
            if(getCdSettore()[i].equalsIgnoreCase(getSelected()[j]))
            {
                flag++;
            }
        }
        if(flag==0)
        {
         System.out.println("not selected :"+getCdSettore()[i]);
        }
    }
  • 0
    благодарю меня, отличное решение !!!!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню