我有一個將Spring控制器與幾個常規servlet結合在一起的門戶。servlet轉發不通過模型後的彈簧重定向
在屏幕上,用戶有一個列表,他/她選擇一張信用卡以查看該卡交易的報告。作爲一種額外的安全措施,我避免將任何請求中的信用卡發送給客戶端,因此我有一張蒙面的信用卡號碼列表,以便我發送給用戶,並且在用戶發送的請求中,我收到了一份我使用的記錄ID以確定哪個信用卡正在查詢。
在控制器(ReportController),我有處理此輸入和呼叫(局部地)負責處理報告(ReportServlet)的小服務程序的方法。如果處理中有任何錯誤,應使用型號 param「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;}
如果你要轉發,你應該從你的控制器返回'null'而不是'CARDTRANSACTIONS_PATH',我假設它是一些String。 –