У меня есть портал, который сочетает в себе контроллеры Spring с несколькими регулярными сервлетами.Spring redirect после сервлета вперед не проходящая модель
На экране пользователь имеет список, из которого он/она выбирает кредитную карту, чтобы видеть отчет о транзакциях этой карты. В качестве дополнительной меры безопасности я не отправляю кредитную карту в любой запрос клиенту, поэтому у меня есть список номеров кредитных карт, замаскированных, которые я отправляю пользователю, и в запросе, отправленном пользователем. Я получаю идентификатор записи, который я использую для определения того, какая кредитная карта запрашивает.
В контроллере (ReportController), у меня есть метод, который обработать этот вход и вызов (локально) сервлет отвечает за обработку отчета (ReportServlet). Если в обработке есть какая-либо ошибка, она должна вернуть ее на экран с помощью модели param «ошибка». Эта последняя часть не работает.
Если есть ошибка в 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', который я предполагаю, является некоторой строкой. –