1

これで、index.jspという名前のページを更新しています。

<head>
        <meta http-equiv="Refresh" CONTENT="0;URL=populatefields.action">

</head>

そして、それは私の行動を呼んでいます。これが私のstruts.xmlのマッピングです

 <struts>

        <package name="com.action" extends="struts-default">
            <action name="*fields" method="{1}" class="com.action.RegisterAction">
    <result name="populate">/register.jsp</result>
    <result name="fields">/success.jsp</result>
<result name="error">/index.jsp</result>
    </action>

ここで行ったことは、index.jspの読み込みで、このURLで更新しました'populatefields.action'。これにより、アクションクラスとpopulateメソッド(ワイルドカードメソッドの呼び出し)が呼び出されます。Populateメソッドは、データベースからエントリを選択し、それらをフォームフィールドのプロパティに割り当てますreturns "populate";。これにより、いくつかの値が既に入力されたregister.jspが制御されます。現在のユーザーに応じたフォーム]

register.jspで、検証チェックが次のようになっている場合 if(getUssername.equals("")) {this.addActionerror("Empty field -Uname-"); return error;}

問題は、「エラー」が返されるときに、コントロールがindex.jspに移動し、メソッドにデータが入力され、自動フィールドにデータが入力されますが、メソッドにエラーがスローされないため、空です...またはエラーが失われます...これらのエラーにアクセスできますか?アクションクラスでdemをグローバルに設定しますか?actionerrorsはindex.jspにありますが、データベースから値を選択するためにロードするたびにそのページを更新したいのですが、あるjspページから別のページにアクションエラーの値を取得できますか?

4

1 に答える 1

1

完了:これほど簡単だとは思っていませんでした。値を転送する必要はありません。ただし、ページが更新されず、タグのみが含まれている場合は、<s:actionerror/>を使用してページ全体を転送できます。リンクを使用してアクションを呼び出す場合と同様に、この場合はアクションへの道を更新しません。しかし、私の場合は更新が必要なので、次のようにします。<jsp:include page='index.jsp'><s:actionerror/><a>

リターンエラーを入力する直前。そこにpopulateメソッドの内容をexecuteメソッドにコピーします。そのような

execute{
if(validation fails){populate method content(leave the return statement); 
  return error;
 }
else
return success;
}

struts.xmlで、これを<result name="error">/register.jsp</result>ではなく変更します<result name="error">/index.jsp</result>

また<s:actionerror> 、index.jspに書き込む必要はありません。これは、register.jspにリダイレクトしているため、register.jspに書き込むだけです...

これで、フォームを登録するための更新基金が機能します。検証が失敗した場合は、今すぐ送信してみてください。同じページが、入力されたフィールド:Dおよびアクションエラーで呼び出されます。

于 2012-05-07T05:12:03.773 に答える