在html页面中显示struts2错误 [英] Diplay struts2 error in html page

查看:147
本文介绍了在html页面中显示struts2错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆