2011-01-29 28 views
0

私はstruts2にはかなり新しいので、私の問題を理解するために必要なすべてを投稿しようとしています。より明確にしよう、私はこの問題のアイデアが不足している、それは古典のように聞こえる。私は私のJSP.Lets内のチェックボックスの動的な数を持っているActionクラスの値を返すStruts2チェックボックス

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

はその後、私は要素であるアクションクラス{1,2の配列をしたいユーザーは、第1および第2のチェックボックスを選択した場合、私は私のjsp.Thenで3つのチェックボックスを持っていると言います}。ユーザーが最初と3番目のチェックボックスを選択すると、要素が{1,3}であるアクションクラスの配列が必要になります。どうすればstruts2で実行できますか?

私はアクションクラスのゲッターとセッターがありますので、actionClassは私に真を与えるとfalse

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

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

。 followinコードで

(セッション・オブジェクトに格納されている)のList1がStatusDTOsとゲッターのリストであり、セッターStatusDTOの 要素以下の通りである れる: - JSPで

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; 
} 

実際のコードは

<% 
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

私はArray to List ...を好んでいます。この非常に短いサンプルがうまく動作するようにして、チェックボックスを動的に選択する方法を示します。

デモでは、番号でラベル付けされた複数のチェックボックスがリストされ、最初のリストから選択されたボックスが2番目のリストに表示され、2番目のリストで選択されたボックスは順序なしリストの一部になります。

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> 

アクションクラス "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 "

選択したチェックボックスの表示状態と、順序付けられていないリスト内の内容との間に不一致があることがわかります。これは、アクションメソッド内で修正するのは本当に簡単ですが、サンプルを長くし、チェックボックスの機能を説明するのを邪魔します。さらにゲッターやセッターでフィールドをカプセル化することは良いアイデアだと感じていますが、やはりコード長を大幅に拡大します。

関連する問題