Ошибка Diplay Struts2 на HTML-странице
Я добавил свою ошибку и сообщение в класс действий Struts2, используя addActionMessage
а также addActionError
метод. Теперь я хочу код для отображения этого сообщения и этой ошибки в HTML-странице? Можно ли распечатать?
1 ответ
Положил
<s:actionerrors />
а также
<s:actionmessages />
теги внутри вашего JSP
И, для лучшего графического результата, используйте конкретный контейнер div (например, один красный, один зеленый) и прежде проверяйте, есть ли у вас сообщения или ошибки (чтобы печатать div, только если он не пустой):
<s:if test="hasActionErrors()">
<div class="feedError">
<s:actionerrors />
</div>
</s:if>
<s:if test="hasActionMessages()">
<div class="feedOk">
<s:actionmessages />
</div>
</s:if>
и в CSS
.feedError{
width: 100%;
border: 10px solid red;
}
.feedOk{
width: 100%;
border: 10px solid green;
}
РЕДАКТИРОВАТЬ: нет, насколько я знаю, вы не можете получить ошибки действий и сообщения непосредственно из HTML. Вы можете сделать ajax-вызовы для действия, которое извлекает их из Session и возвращает их в JSon, но это действительно излишне, плохо разработано и не нужно.
В качестве решения вы можете использовать другую технологию представления вместо JSP; это не просто HTML, но по крайней мере вы не можете использовать Scriptlets внутри страниц, если это ваша проблема с использованием JSP.
Вы можете использовать шаблон FreeMarker, например.
Предыдущий фрагмент JSP станет примерно таким (непроверенным) в файле.ftl:
<#if (actionErrors?size>0)>
<div class="feedError">
<@s.actionerror />
</div>
</#if>
<#if (actionMessages?size>0)>
<div class="feedOk">
<@s.actionmessage />
</div>
</#if>
Или скорость (опять же, не проверено):
#if( $actionErrors.size() > 0 )
<div class="feedError">
#foreach( $msg in $actionErrors )
[$msg]<br />
#end
</div>
#end
#if( $actionMessages.size() > 0 )
<div class="feedOk">
#foreach( $msg in $actionMessages )
[$msg]<br />
#end
</div>
#end
ПРИМЕЧАНИЕ. Если причиной неиспользования JSP является запрет скриплетов, вы можете настроить это при добавлении web.xml.
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<scripting-invalid>true</scripting-invalid>
</jsp-property-group>
</jsp-config>
Использование JSP со Struts2 - не единственный способ, но он самый простой и быстрый, imho.