2012-03-04 7 views
0

私はAJAXリクエストで使用されるStruts 2ユーザ定義の結果を使用しています。Struts 2ユーザ定義のAJAX結果でスローされた例外を処理する方法は?

例外をスローすると、私はレスポンスとしてhtml形式の "Struts Problem Report"を取得します。これはあまり役に立ちません。このような例外を適切に処理するにはどうすればよいですか?適切なjavascript errorResponse関数を呼び出すか、ユーザーを別のページに移動させますか?

public class MyResult implements Result { 

    @Override 
    public void execute(ActionInvocation invocation) { 

     if (invocation.getStack().findValue("data") == null) { 
      throw MyException("Data is bad."); 
     } 

     PrintWriter responseStream = 
      ServletActionContext.getResponse().getWriter(); 
     responseStream.println("Data is good."); 
     responseStream.close(); 
    } 
} 

答えて

0

exception handling resultを宣言するか、または何か有用なものを戻すことを宣言してください。

+0

これはAJAXリクエストであるため、ページは再読み込みされません。何らかの有用な情報をユーザに提供するために、どのような例外処理結果を定義できますか? –

+0

@Victorb例外情報をJSONにシリアル化することができます.HTTPコードなどを設定してJavaScriptコールバックで動作させることができます。 –

+0

だから、Strutsの例外処理設定を乱用すると、カスタム例外処理の結果が出ない限り、ここであまり役に立ちません。最適な方法は、カスタムエラーやシリアル化されたJSON例外のような便利なものをストリーミングすることです。 –

関連する問題