Ошибка 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.

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