在html页面中显示struts2错误

时间:2012-10-31 08:25:14

标签: html css jsp model-view-controller struts2

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

1 个答案:

答案 0 :(得分:5)

<s:actionerrors />

<s:actionmessages />
JSP中的

标签

AND,为了获得更好的图形结果,请使用特定的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中检索它们的动作进行ajax调用,然后在JSon中返回它们,但这实际上是过度的,设计不好而且没有必要。

作为一种解决方案,您可以使用另一种视图技术而不是JSP; 它不仅仅是纯HTML,但至少你不能在页面内使用Scriptlets,如果这是你使用JSP的问题。

例如,您可以使用FreeMarker Template

以前的JSP代码段在.ftl文件中会变成这样(未经测试):

<#if (actionErrors?size>0)>
    <div class="feedError">
        <@s.actionerror />
    </div>
</#if>

<#if (actionMessages?size>0)>
    <div class="feedOk">
        <@s.actionmessage />
    </div>
</#if>

Velocity(再次,未经测试):

#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一起使用并不是唯一的方法,但它是最简单,最快的,imho。