html页面显示struts2错误
我使用 addActionMessage
和 addActionError
方法在 struts2 动作类中添加了我的错误和消息.现在我想要在 html 页面中显示此消息和此错误的代码?可以打印吗?
I added my error and message in struts2 action class using addActionMessage
and addActionError
method.
Now I want code for displaying this message and this error in the html page? Is it possible to print?
推荐答案
Put
<s:actionerrors />
和
<s:actionmessages />
JSP 中的标签
并且,为了获得更好的图形结果,请使用特定的 div 容器(例如,一个红色,一个绿色)并在之前检查您是否有消息或错误(仅在不为空时打印 div):
AND, for a better graphical result, use a particular div container (one red, one green for example) and check before if you have messages or errors (to print the div only if not empty):
<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 调用,但这确实是矫枉过正、设计不佳且没有必要.
no, as far as I know you can't get Action Errors and Messages directly from HTML. You can make ajax calls to an action that retrieves them from Session and returns them in JSon, but this is really overkill, bad designed and not necessary.
作为一种解决方案,您可以使用另一种视图技术来代替 JSP;它不仅仅是普通的 HTML,但至少你不能在页面内使用 Scriptlet,如果这是你使用 JSP 的问题的话.
As a solution, you can use another view technology instead of JSP; it isn't just plain HTML, but at least you can't use Scriptlets inside pages, if that's is your problem with using JSP.
例如,您可以使用 FreeMarker 模板.
之前的 JSP 片段在 .ftl 文件中会变成这样(未经测试):
The previous JSP snippet would become something like this (untested), in the .ftl file:
<#if (actionErrors?size>0)>
<div class="feedError">
<@s.actionerror />
</div>
</#if>
<#if (actionMessages?size>0)>
<div class="feedOk">
<@s.actionmessage />
</div>
</#if>
或 Velocity(同样,未经测试):
Or Velocity (again, untested):
#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 添加配置此行为
NOTE: if the reason for not using JSPs is to prevent scriptlets, you can configure this behaviour in web.xml adding
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<scripting-invalid>true</scripting-invalid>
</jsp-property-group>
</jsp-config>
在 Struts2 中使用 JSP 并不是唯一的方法,但它是最简单和最快的,恕我直言.
Using JSP with Struts2 is not the only way, but it is the easiest and the fastest, imho.
相关文章