Adobe AEM - Как я могу вернуть пользовательскую страницу с ошибкой после сбоя сообщения? - PullRequest
1 голос
/ 19 марта 2020

Я создал перезапись базовых форм, где я пытаюсь вернуть страницу с ошибкой, настроенную автором в компоненте. Другими словами, поток будет выглядеть так: - страница конфигурации ошибки автора - конечный пользователь отправляет форму - процесс формы не удается - 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 в ответе .?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...