2011-07-20 10 views
1

私はActionForm(RevisionActionForm)を持っています。これはDB2から入力してページに表示しています。このフォームはさまざまなフィールドといくつかの他のクラスを含むクラスとArrayListを持っています。ページが正常に読み込まれ、すべてが表示されますが、ページが送信されると、フォームにはArrayList要素がなくなります(他のフィールドはすべて期待通りに読み込まれます)。私はこの問題は、ArrayListがビルドされているが、値が格納される要素が存在しないことを前提としています。以下は関連するコードセグメントです(私はこの記事を減らすために無関係です) 。StrutsのArrayList 1 ActionFormにデータが入力されていません

JSP

<logic:notEmpty name="revisionBean" property="revisionData.reasonsData"> 
    <div> 
     &nbsp; 
    </div> 
    <div style="vertical-align: top; text-align: left; font-size: 15px"> 
     <strong> 604 Information </strong> 
    </div> 
    <logic:iterate id="reqReas" name="revisionBean" property="revisionData.reasonsData" indexId="reqReasIdx"> 
     <div> 
      <ao:text name="reqReas" property="reasonCodeId" indexed="true" 
        label="Reason Code ID ${reqReasIdx+1}: " 
        size="5" maxlength="5" disabled="true"/> 
     </div> 
     <div> 
      <ao:text name="reqReas" property="priorityOrNum" indexed="true" 
        label="Priority Or Num ${reqReasIdx+1}: " 
        size="2" maxlength="2" disabled="true"/> 
     </div> 
    </logic:iterate> 
</logic:notEmpty> 

のActionForm

public class RevisionActionForm extends BaseActionForm{ 

    /** 
    * Transfer object for the Revision information. 
    */ 
    private RevisionTO revisionData = new RevisionTO(); 

    public RevisionActionForm() { 
    } 

    public RevisionTO getRevisionData(){ 
     return revisionData; 
    } 

    public void setRevisionData(RevisionTO revisionData){ 
     this.revisionData = revisionData; 
    } 
} 

RevisionTOが

public class RevisionTO implements Serializable { 

    private ArrayList<RevisionReasonsTO> reasonsData = new ArrayList<RevisionReasonsTO>(); 

    public RevisionTO() { 
    } 

    public ArrayList<RevisionReasonsTO> getReasonsData() { 
     return reasonsData; 
    } 

    public RevisionReasonsTO getReasonData(int index) { 
     if (reasonsData == null) { 
      reasonsData = new ArrayList<RevisionReasonsTO>(); 
     } 
     while (index >= reasonsData.size()) { 
      reasonsData.add(new RevisionReasonsTO()); 
     } 
     return reasonsData.get(index); 
    } 

    public void setReasonsData(ArrayList<RevisionReasonsTO> reasonsData) { 
     this.reasonsData = reasonsData; 
    } 
} 

処置 パブリッククラスRevisionAction {

アクションを拡張(ArrayListのが成り立ちます)

私はネットで研究していて、先週は成功せずに実験しました。私はこれが明らかな場合はお詫びしますが、私はJavaでちょっと錆びていて、Strutsには新しいです。すべての助けをいただければ幸いです。

答えて

1

あなたgetReasonData(int index)setReasonsData(ArrayList<RevisionReasonsTO> reasonsData)getReqReas(....)へとsetReqReas

を変更
関連する問題