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();
}
}
これはAJAXリクエストであるため、ページは再読み込みされません。何らかの有用な情報をユーザに提供するために、どのような例外処理結果を定義できますか? –
@Victorb例外情報をJSONにシリアル化することができます.HTTPコードなどを設定してJavaScriptコールバックで動作させることができます。 –
だから、Strutsの例外処理設定を乱用すると、カスタム例外処理の結果が出ない限り、ここであまり役に立ちません。最適な方法は、カスタムエラーやシリアル化されたJSON例外のような便利なものをストリーミングすることです。 –