Как перенести `error_messages_for` из Ruby Erb в Java JSP/JSTL?
Как бы вы перенесли эту интерфейсную логику с erb на jsp/jstl?
<%= error_messages_for :foo %>
Есть ли библиотека Java, которая делает что-то подобное?
1 ответ
Решение
Поддерживать их в Map<String, String>
в бизнес-коде поместите его в область запроса следующим образом:
Map<String, String> messages = new HashMap<String, String>();
request.setAttribute("messages", messages);
// ...
messages.put("foo", "Please enter valid value");
Затем вы можете получить к нему доступ в JSP обычным способом EL: ${messages.key}
или же ${messages['key']}
:
<input id="foo" name="foo" value="${fn:escapeXml(param.foo)}">
<label for="foo" class="error">${messages.foo}</label>
EL встроен в JSP с давних пор. Вам не нужно устанавливать его. Только fn:escapeXml
(который является обязательным для предотвращения XSS) является частью JSTL, который может потребоваться установить отдельно на некоторых контейнерах сервлетов.