2014-04-24 27 views
1

我是新来的java和struts2,请大家帮忙。 从一个动作我已阅读并处理在jsp中创建的列表struts2如何从jsp读取值迭代器到行动

我的问题是,我如何访问来自迭代器操作的数据?

JSP页面

<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

a nd什么'cdSettore','dsSettore' ...给一些explainantion,并提供您的文件的名称请 –

+0

我完全不明白你想要做什么。 ** getselcted()**将得到只被选中的值.. **你怎么能在'selected ones'中找到'not selected'?** 另外你正在初始化一个数组并且创建它的大小循环! –

回答

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> 

得不到sel ected一旦

在动作类

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

** thanksssssss,完美的解决方案!!!! ** – JoeyTrl