Я выполняю некоторую проверку формы на стороне сервера, и в случае, если одно или несколько полей заполнены неправильно, массив заполняется всеми сообщениями об ошибках.На стороне клиента у меня есть сценарий, который проверяет наличие любых сообщений об ошибках и, если они есть, отображает их.Когда страница приходит из сервлета, он знает, произошел ли сбой или нет, потому что при успешной отправке он вообще не будет перезагружать страницу jsp формы.
Вот как я отображаю ошибку:
<%if(request.getSession().getAttribute("errors") != null){ %>
<jsp:include page="error.jsp"></jsp:include>
<br>
<% } %>
И страница error.jsp:
<%@ page import="java.util.ArrayList" %>
<h3>Oops...We Have a Problem</h3>
Please review and fix the following errors.
<br>
<%
ArrayList errMessages = (ArrayList)request.getSession().getAttribute("errors");
for(int i=0; i<errMessages.size(); i++){
out.println(errMessages.get(i));
%>
<br>
Все это прекрасно работает, но я следую подходу парадигмы MVC / Model 2, в котором я ограничиваю код сервлетами иHTML (экранные объекты), ограниченные страницами JSP.Очевидно, что этот небольшой пример нарушает правила.
Есть ли способ "предварительно собрать" страницу jsp на сервлете, чтобы он знал, что нужно отобразить error.jsp, и я могу выполнить полную абстракцию массива насервер?В этом примере это всего лишь небольшой кусочек кода в jsp, который не может повредить, но в других примерах я вижу, как этот код становится гораздо большим разделом страницы, и это то, чего я хотел бы избежать.