Проблема форматирования в сообщениях 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" />
Другие вопросы по тегам