2014-04-24 33 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