0

こんにちは、ネストされたイテレータを含む who を使用してフォームを送信したいのですstruts2 hibernate 3が、jsp でグローバル変数を使用しようとしているすべての属性名を区別できません。

<% int i=0; %>
<form  name="evalform" action="saveOrUpdateSousEval"    method="post"  >    
<s:iterator value="CategListGrille"  status="catgStatus">
     <s:iterator value="type"   status="typeStatus">
             <s:iterator  value="item" status="itemstatus" >
                    <s:textfield value="66" name="%{'souseval[#i].SousEval_Note'}"  />
                    <% i++;  %>
             </s:iterator>
    </s:iterator>
</s:iterator> 
    <s:submit value="Evaluer"  cssClass="btnsubmit"   /> 
    </div>  
</form> 

私のクラスのアクションでは、私はこれを持っています:

private ArrayList<SousEvaluation> souseval= new ArrayList<SousEvaluation>(); 
public String saveOrUpdate(){   
        System.out.println("enter saveOrUpdateEvalNote ok");    
        sousevaldao.saveOrUpdateSousEvaluation(souseval);

        return SUCCESS;
    }

そして私のクラスDaoには次のものがあります:

@Override 
    public void saveOrUpdateSousEvaluationNote(ArrayList<SousEvaluation> sousevalnote) {
        try {
            for (Iterator<SousEvaluation> it = sousevalnote.iterator(); it.hasNext();) {
                                      session.saveOrUpdate(it.next());
                 }
        } catch (Exception e) {
            transaction.rollback();
            e.printStackTrace();
        }   

    }

私の目標は、フォームを使用して一度に多くのオブジェクトを送信することです

そのようなイテレータを 1 つだけ使用すると、一度に多くのレコードを送信できます。

<form  action="saveOrUpdateSousEval"    method="post"     > 
<s:iterator  begin="1" end="2" status="status">
            <s:textfield     name="%{'souseval['+#status.index+'].SousEval_Note'}"   />
        <s:textfield name="%{'souseval['+#status.index+'].evalglb.Eval_ID'}"    />
        <s:textfield name="%{'souseval['+#status.index+'].sousEvalItem.SousItem_ID'}"  />

</s:iterator>
 <s:submit value="Evaluer"  cssClass="btnsubmit"   /> 
 </form>
4

1 に答える 1

0

Strut タグとスクリプトレットを混在させた非常に悪いコーディング スタイルです。実際、スクリプトレットは決して使用しません。ビューをきれいにしましょう。

私は質問を 2 回読みましたが、あなたはすでに解決策を自分で書いています。どうしたの ?

<s:iterator value="CategListGrille"  status="firstIter">
     <s:iterator value="type"   status="secondIter">

<s:textfield name="souseval[%{#firstIter.index}].sousEvalItem[%{#secondIter.index}].SousItem_ID'}"  />
<s:textfield name="souseval[%{#firstIter.index}].sousEvalItem[%{#secondIter.index}].SousItem_Name'}"  />
<s:textfield name="souseval[%{#firstIter.index}].sousEvalItem[%{#secondIter.index}].SousItem_Description'}"  />

アクションには次のようなものがあります。

private List<List<sousEvalItem>> lst;

質問をより明確に説明していただければ、的を絞った解決策を提供できるかもしれません。

于 2013-09-14T09:11:58.333 に答える