1

addActionMessage我使用andaddActionError方法在 struts2 动作类中添加了我的错误和消息。现在我想要在 html 页面中显示此消息和此错误的代码?是否可以打印?

4

1 回答 1

5

<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 获取操作错误和消息。您可以对从 Session 中检索它们并在 JSon 中返回它们的操作进行 ajax 调用,但这确实是矫枉过正、设计不佳且没有必要。

作为一种解决方案,您可以使用另一种视图技术来代替 JSP;它不仅仅是普通的 HTML,但至少你不能在页面内使用 Scriptlet,如果这是你使用 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 的原因是为了阻止 scriptlet,您可以在 web.xml 添加配置此行为

<jsp-config>
        <jsp-property-group>
                <url-pattern>*.jsp</url-pattern>
                <scripting-invalid>true</scripting-invalid>
        </jsp-property-group>
</jsp-config> 

将 JSP 与 Struts2 一起使用并不是唯一的方法,但它是最简单和最快的,恕我直言。

于 2012-10-31T08:47:26.790 回答