Spring コントローラーといくつかの通常のサーブレットを組み合わせたポータルがあります。
この画面では、ユーザーはリストからクレジット カードを選択し、そのカードの取引のレポートを表示します。追加のセキュリティ対策として、クライアントへのリクエストでクレジットカードを送信しないようにするため、クレジットカード番号のリストをマスクしてユーザーに送信し、ユーザーから送信されたリクエストで、使用するレコードIDを受け取ります照会しているクレジット カードを特定します。
コントローラー ( ReportController ) には、この入力を処理し、レポートの処理を担当するサーブレット ( ReportServlet ) を (ローカルで) 呼び出すメソッドがあります。処理中にエラーが発生した場合は、モデルパラメータ「error」を使用して画面に返す必要があります。この最後の部分は機能していません。
ReportServletにエラーがある場合、画面に返されません。転送行にコメントすると(そしてエラーを強制すると)機能しますが、転送を行った後は機能しません。私が間違っていることは何ですか?
コードは次のとおりです。
ReportController
try {
...
if (cardholders == null || cardholders.size() < 2 || id <= 0) {
model.put("error","there's an error");
return CARDTRANSACTIONS_PATH;
} else {
...
HttpUpdatetableRequestWrapper customRequest = new HttpUpdatetableRequestWrapper(request);
customRequest.setParameter("cardnumber", cardholder.getCardnumber());
request.getRequestDispatcher(config.getProperty("reportservlet")).forward((HttpServletRequest) customRequest, response);
String error = (String) session.getAttribute("error");
if(!(error == null || "".equals(error))){
throw new RuntimeException(error);
}
}
} catch (Exception ex) {
model.put("error", "there's an error");
} finally{ return CARDTRANSACTIONS_PATH;}