Я создал перезапись базовых форм, где я пытаюсь вернуть страницу с ошибкой, настроенную автором в компоненте. Другими словами, поток будет выглядеть так: - страница конфигурации ошибки автора - конечный пользователь отправляет форму - процесс формы не удается - aem возвращает страницу ошибки, настроенную автором со статусом 500
в момент, когда я перезаписал форвард. jsp. JSP, которые используются различными действиями Foundation Form. Этот jsp выполняет пересылку сервлету, который обрабатывает данные, введенные конечным пользователем, вот строка, которая выполняет пересылку:
FormsHelper.setForwardPath (slingRequest, resource.getPath () + "." + Constants.SERVLET_SELECTOR + ".html");
На сервлете у меня есть код, подобный следующему:
String errorPage = request.getParameter(":errorPage");
...
if (StringUtils.isNotBlank(errorPage)) {
response.reset();
response.setContentType("text/html");
response.setStatus(statusCode);
final RequestDispatcher dispatcher = request.getRequestDispatcher(erroPage);
if (dispatcher != null) {
try {
dispatcher.include(new GetRequest(request), response);
} catch (Exception e) {
logger.debug("Exception swallowed while including error page", e);
}
}
private static class GetRequest extends SlingHttpServletRequestWrapper {
public GetRequest(SlingHttpServletRequest wrappedRequest) {
super(wrappedRequest);
}
public String getMethod() {
return "GET";
}
}
Кажется, это работает, но, поскольку это форвард, параметры отправляются в ответ, что не является необходимым, и я думаю, что это плохая практика. Как правильно сделать это, не делая пересылку, имея возможность вернуть страницу с ошибкой и со статусом 500 в ответе .?