2016-12-04 24 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

你应该接受答案。 –