在html页面中显示struts2错误 [英] Diplay struts2 error in html page
问题描述
我在struts2动作类中使用 addActionMessage
和 addActionError
方法添加了我的错误和消息。
现在我想在HTML页面中显示此消息和此错误的代码?是否可以打印?
放置
< s:actionerrors />
和
< s:actionmessages />
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获取动作错误和消息。
你可以对一个动作进行ajax调用,该动作从Session中检索它们并在JSon中返回它们,但这真的是过度杀伤,设计不当和不必要。
作为一个解决方案,您可以使用另一种视图技术,而不是JSP;
它不只是纯HTML,但至少你不能在页面内使用Scriptlets,如果这是你使用JSP的问题。
请使用 FreeMarker Template 。
前面的JSP代码片段在.ftl文件中会变成这样(未测试的):
< #if(actionErrors? 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。
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 />
and
<s:actionmessages />
tags inside your JSP
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>
and in CSS
.feedError{
width: 100%;
border: 10px solid red;
}
.feedOk{
width: 100%;
border: 10px solid green;
}
EDIT: 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.
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.
You can use FreeMarker Template, for example.
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>
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
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>
Using JSP with Struts2 is not the only way, but it is the easiest and the fastest, imho.
这篇关于在html页面中显示struts2错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!