2016-12-04 49 views
-1

所以我有這樣的代碼: JSP(其中用戶被示值的第一件事)從Struts的複選框獲取值是迭代

<s:iterator value="animes"> 
     <tr> 
      <td><s:checkbox name="checked" value="false" fieldValue="%{aniTitle}" 
         theme="simple" id=""/></td> 
      <td><s:property value="aniTitle"/></td> 
      <td><s:property value="aniStudio"/></td> 
      <td><s:property value="aniEpi"/></td> 
     </tr> 
     </s:iterator> 

然後點擊一個按鈕後,你在這裏通過支柱重定向:

<action name="aniDelHits2" class="AniAction" method="executeDelHits2"> 
     <result name="success" >deletechecked.jsp</result> 
     <result name="error" >error2.jsp</result> 
    </action> 

然後操作:

public String executeDelHits2(){ 
    titles = dao.deleteChecked(checked); 
    Iterator iterator = titles.iterator(); 
     if(iterator.hasNext()){  
      return SUCCESS;  
     }else{ 
      return ERROR; 
      }  
} 

然後DAO:

public ArrayList<String> deleteChecked(String[] checked){ 
    //List<Anime> animes = new ArrayList<Anime>(); 
    ArrayList<String> anime2 = new ArrayList<String>(); 

    for(int i=0;i < checked.length;i++){ 
     anime2.add(checked[i]); 
    } 



    return anime2; 

} 

然後將結果,如果說成功:

<s:iterator value="titles"> 
       <tr> 
        <td><s:property value="titles.checked"/></td> 

       </tr> 
      </s:iterator> 

我不知道如何從被選中的複選框獲取值(我將它們命名爲檢查)和他們的fieldValue方法是什麼,我希望把一個數組輸出到另一個。

回答

0

首先,您需要爲名爲checked的動作類創建屬性,該動作類別與s:checkboxname字段中的值相對應。

private String[] checked; 
//getter and setter provide 

s: checkbox值應通過s:form或與請求傳輸形式數據的任何其他方式提交。

默認堆棧包含checkbox攔截器,該攔截器接受已檢查和未檢查的值。如果你只想檢查值,那麼你應該使用html複選框。如果使用fieldValue屬性,則應該使用value="true",否則checkbox攔截器將不會接受檢查值和字段值將不會轉換爲操作屬性。 (對於未檢查的值,它可能是value="false")。

<s:checkbox name="checked" value="true" 
      fieldValue="%{aniTitle}" theme="simple"/> 

既然你只需要得到的值,在上述溶液中多個值有一個單一的參數名稱。它可能比複雜名稱更簡單,以綁定到操作的索引屬性。如果您需要雙向綁定此屬性,則使用最後一個。您可以看到示例Get value from checkbox inside iterator, in struts2

如果您需要更深入瞭解複選框攔截器如何工作,您可以閱讀this答案。

+0

你應該接受答案。 –