Как перенести `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, который может потребоваться установить отдельно на некоторых контейнерах сервлетов.

Другие вопросы по тегам