Проблема форматирования в сообщениях HTML из ResourceBundle с использованием <s: actionerror /> или <s: actionmessage /> в Struts2
У меня есть файл свойств (комплект ресурсов). Я пытаюсь показать ошибки в одном из JSP, загрузив их из файла свойств. У меня есть запись, как показано ниже в моем файле свойств.
errors.password.rules=<font color="red">The password you have entered does not meet password strength requirements. Please select a new password that conforms to the following standards:<UL><LI>Minimum length of 8 characters</LI> <LI>Maximum length of 18 characters</LI><LI>At least one upper-case character</LI> <LI>At least one lower-case character</LI><LI>At least one non-alphabetic character</LI> <LI>Does not contain 3 or more consecutive repeating characters (e.g. AAA)</LI> <LI>Does not contain the User ID</LI><LI>Does not contain common dictionary words more than 4 characters long</LI><LI>New Password should not be the same as previous password</LI></UL></font>
Выше при загрузке с использованием распорок 1 показано, как показано ниже
The password you have entered does not meet password strength requirements. Please select a new password that conforms to the following standards:
- Минимальная длина 8 символов
- Максимальная длина 18 символов
- Хотя бы один символ в верхнем регистре
- Хотя бы один строчный символ
- Хотя бы один неалфавитный символ
- Не содержит 3 или более последовательных повторяющихся символа (например, AAA)
- Не содержит идентификатор пользователя
- Не содержит общих словарных слов длиной более 4 символов
- Новый пароль не должен совпадать с предыдущим паролем
То же самое при загрузке с Struts 2 показывает см. Прикрепленный файл для вывода
• The password you have entered does not meet password strength requirements. Please select a new password that conforms to the following standards: o Minimum length of 8 characters o Maximum length of 18 characters o At least one upper-case character o At least one lower-case character o At least one non-alphabetic character o Does not contain 3 or more consecutive repeating characters (e.g. AAA) o Does not contain the User ID o Does not contain common dictionary words more than 4 characters long o New Password should not be the same as previous password
Вышеуказанное отображается с обведенным кружком маркером, каждый на следующей строке. А за пулей идет первая линия
Пожалуйста, предложите, какие изменения я должен внести в мои файлы свойств, чтобы загрузить ошибки так же, как и с Struts 1.x.
1 ответ
<s:actionerror/>
а также <s:actionmessage/>
теги будут инкапсулировать ваш actionerrors
а также actionmessages
в <ul><li><span>yourmessage</span></li></ul>
,
Это сделает ваше сообщение, начиная с точки круга (потому что оно находится внутри <li>
) и другие вложенные <li>
с контуром круга (как определено HTML для второго уровня <li>
).
Это:
<s:actionmessage />
сгенерирует:
<ul class="actionMessage"><li><span>
<font color="red">The password you have entered does not
meet password strength requirements. Please select a new password that conforms
to the following standards:<UL><LI>Minimum length of 8 characters</LI>
<LI>Maximum length of 18 characters</LI><LI>At least one upper-case character</LI>
<LI>At least one lower-case character</LI><LI>At least one non-alphabetic character</LI>
<LI>Does not contain 3 or more consecutive repeating characters (e.g. AAA)</LI>
<LI>Does not contain the User ID</LI><LI>Does not contain common dictionary words
more than 4 characters long</LI><LI>New Password should not be the same as
previous password</LI></UL></font>
</span></li></ul>
Чтобы сгенерировать вывод, который вы хотите, вы можете написать свой собственный.ftl, или более легко избежать использования <s:actionerror/>
/ <s:actionmessage>
теги, и сделайте цикл самостоятельно:
<s:if test="actionMessages!=null && actionMessages.size > 0">
<div class="actionmessage">
<s:iterator value="actionMessages" >
<span>
<s:property escapeHtml = "false" />
</span>
<br/>
</s:iterator>
</div>
</s:if>
результат:
<div class="actionmessage"><span>
<font color="red">The password you have entered does not
meet password strength requirements. Please select a new password that conforms
to the following standards:<UL><LI>Minimum length of 8 characters</LI>
<LI>Maximum length of 18 characters</LI><LI>At least one upper-case character</LI>
<LI>At least one lower-case character</LI><LI>At least one non-alphabetic character</LI>
<LI>Does not contain 3 or more consecutive repeating characters (e.g. AAA)</LI>
<LI>Does not contain the User ID</LI><LI>Does not contain common dictionary words
more than 4 characters long</LI><LI>New Password should not be the same as
previous password</LI></UL></font>
</span><br/></div>
Вы можете сделать цикл для actionMessages
, actionErrors
и в конце концов fieldErrors
и положить их в messages.jsp
фрагмент, так что вы можете использовать его на каждой странице (без переписывания каждый раз) с чем-то вроде:
<s:include value="/WEB-INF/content/fragments/messages.jsp" />