addActionMessage
我使用andaddActionError
方法在 struts2 动作类中添加了我的错误和消息。现在我想要在 html 页面中显示此消息和此错误的代码?是否可以打印?
问问题
1813 次
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 回答