2011-01-29 60 views
0

我对struts2很新颖,所以我试图发布一切你需要了解我的问题,非常感谢你的帮助。试着更加清楚,我在这个问题上缺乏创意,即使它听起来像一个经典。Struts2复选框返回Action类中的值类

<s:checkbox name="selectedIndex" theme="simple" > 
</s:checkbox> 

我在我的JSP.Lets复选框的动态数说我有三个复选框在我jsp.Then如果用户选择第一和第二复选框然后我想在操作类元素为{1,2一阵列}。如果用户选择第一个和第三个复选框,那么我需要一个操作类中的元素为{1,3}的数组。如何在struts2中执行此操作?

我有getter和setter在行动类为:

public String[] getSelectedIndex() { 
return selectedIndex; 
} 

public void setSelectedIndex(String[] selectedIndex) { 
this.selectedIndex = selectedIndex; 
} 

所以actionClass给我真假。

在跟随着代码列表1(在会话对象存储)是StatusDTOs和吸气剂的列表中,设置器被以下StatusDTO的 元件 : -

public boolean getIsDisabled() 
{ 
return this.isDisabled; 
} 

public void setIsDisabled(boolean isDisabled) 
{ 
this.isDisabled=isDisabled; 
} 

public int getSerialNo() 
{ 
return this.serialNo; 
} 

public void setSerialNo(int serialNo) 
{ 
this.serialNo=serialNo; 
} 
在JSP

实际代码是

<% 
ArrayList temp=(ArrayList)ActionContext.getContext().getSession().get("List1"); 
Iterator itr=temp.iterator(); 
while(itr.hasNext()) 
{ 
StatusDTO psd=(StatusDTO)itr.next(); 
System.out.println("********"+psd.getSerialNo()); 
%> 
<tr> 
<td bgcolor="#E6FAFB"> 
<%=psd.getSerialNo()%> 
</td> 
<td bgcolor="#E6FAFB"> 
<% 
if(psd.getIsDisabled()) 
{ 
%> 
<s:checkbox name="selectedIndex" theme="simple" disabled="true"> 
</s:checkbox> 
<% 
} 
else 
{ 
%> 
<s:checkbox name="selectedIndex" theme="simple" value="1"> 
</s:checkbox> 
<%} 
%> 

</td> 
</tr> 
<% } 
%> 

回答

3

员工豆应该有

private boolean delete; /// with its setter and getter 

JSP

<s:iterator name="staffList" status="bean_rowNum"> 
    <s:checkbox name="staffList[%{#request.attr.bean_rowNum-1}].delete" /> 
</s:iterator> 

在提交时,你会得到选中复选框作为一个真正的

0

我更喜欢列表到数组...这个简短的例子工作,它会告诉你如何动态选择复选框。

该演示列出了多个用数字标记的复选框,从第一个列表中选择的框将出现在第二个列表中,第二个列表中选定的框将成为无序列表的一部分。

JSP “checkboxes.jsp”

<%@taglib prefix="s" uri="/struts-tags"%> 
<html> 
    <body> 
     <h1>All Check Boxes</h1> 
     <s:form action="checkboxes"> 
      <s:checkboxlist name="selectedBoxes" list="allBoxes"/> 
      <s:submit/> 
     <h1>Selected Check Boxes</h1> 
      <s:checkboxlist name="selectedSelectedBoxes" list="selectedBoxes"/> 
      <s:submit/> 
     </s:form> 
     <h1>Values chosen from selected Check boxes</h1> 
     <ul> 
      <s:iterator value="selectedSelectedBoxes"> 
       <li><s:property/></li> 
      </s:iterator> 
     </ul> 
    </body> 
</html> 

Action类 “Checkboxes.java”

package struts2; 

import com.opensymphony.xwork2.ActionSupport; 
import java.util.ArrayList; 
import java.util.Arrays; 
import java.util.List; 

public class Checkboxes extends ActionSupport{ 
    public List<Integer> allBoxes = Arrays.asList(1,2,3,4,5,6,7,22,33,44); //ten elements 
    public List<Integer> selectedBoxes = new ArrayList(); 
    public List<Integer> selectedSelectedBoxes = new ArrayList(); 
} 

如果使用惯例,这是直线前进,如果使用XML行动 “复选框” 映射到类“Struts2的.Checkboxes“

从示例中可以看出,所选复选框的显示状态与无序列表中的内容之间可能存在分歧。这在操作方法中很容易修正,但会使示例变得更长,并且不利于说明复选框的功能。还有一些人认为用getter和setter封装字段是个好主意,但它又会大大扩展代码长度。