2011-01-29 55 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封裝字段是個好主意,但它又會大大擴展代碼長度。