1

メソッドを使用implements Preparableしてオーバーライドprepare()し、準備で問題が発生した場合は、でアクションエラーを設定しますcom.opensymphony.xwork2.ActionSupport addActionError

prepareメソッドがエラーメッセージを設定した後、このメッセージを実際のinitializeメソッドで処理したいと思います。

public class TestClass implements Preparable {

    public void prepare() {
        // ...
        if (error) {
            addActionError("error");
        }
    }

    public String initializeAndDo() {
        String target = ERROR;
        // ...
        return target;
    }

}

デバッグすると、メソッドに到達せず、initiliazeAndDo自動的にINPUTを返します。

struts.xml:アクションブロックにインターセプターがありません。

 <action name="action_name" method="initializAndDo" class="TestClass">
    <result name="input">/pages/input.jsp</result>
    <result name="error">/pages/error.jsp</result>
 </action>

何かアイデアはありますか?

4

1 に答える 1

1

もちろん; これは正常な動作です。

エラーがある場合、"workflow"インターセプターはそれを確認し、"input"結果に転送します。

(非標準の)ワークフローを中断させたくない場合は、prepare()メソッドにエラーを設定しないでください。prepare()1つの代替方法は、チェックインinitializeAndDoメソッドにフラグを設定することです。これにより、要求が"workflow"短絡するのを防ぐことができます。

于 2012-05-16T21:03:30.757 に答える