【发布时间】:2012-10-20 16:04:33
【问题描述】:
我使用addActionMessage 和addActionError 方法在struts2 动作类中添加了我的错误和消息。
现在我想要在 html 页面中显示此消息和此错误的代码?可以打印吗?
【问题讨论】:
标签: html css jsp model-view-controller struts2
我使用addActionMessage 和addActionError 方法在struts2 动作类中添加了我的错误和消息。
现在我想要在 html 页面中显示此消息和此错误的代码?可以打印吗?
【问题讨论】:
标签: html css jsp model-view-controller struts2
放
<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 Template。
以前的 JSP sn-p 在 .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>
在 Struts2 中使用 JSP 并不是唯一的方法,但它是最简单和最快的,恕我直言。
【讨论】: