2009-07-14 136 views
3

我在我的应用程序中使用struts2并尝试使用“s:actionerror /”显示错误消息。它可以很好地显示,但点(。)也会显示错误消息,看起来很丑陋,并且显示为列表。Struts2自定义错误消息

是否有任何方法cuatomize在struts2中的错误消息。

在此先感谢。

回答

4

Brian Yarger的回答是最完整的解决方案。另一方面,最简单的解决方案就是使用CSS并修改li元素。

JSP:

<s:if test="hasActionErrors()"> 
    <div class="errors"> 
     <s:actionErrors/> 
    </div> 
</s:if> 

CSS:

li .errors { list-style: none; } 
0

您好,我找到了摆脱点的解决方案。

<table align="center" width="70%" class="stats"> 
         <tr> 
         <s:if test="hasActionErrors()"> 
          <s:iterator value="actionErrors"> 
           <tr> 
            <td class="error"> 
             <img alt="error message" src="./images/cross.gif" width="10" height="10"/>&nbsp;<s:property escape="false" /> 
            </td> 
           </tr> 
          </s:iterator> 
       </s:if> 

尝试了这一点。

1

另一种解决方案是覆盖默认actionError输出的模板。

您可以在struts2核心jar中找到默认模板。如果你拉出template.simple/actionerror.ftl,你可以自定义。您可以创建自己的模板,并使用template属性在s:actionerror标记中引用它,也可以保留相同的名称并将其放在/ template/simple中,并将其用作默认值。

大多数的模板都在freemarker中,虽然仍有一些速度他们根据您的struts2的版本。两者都很容易与模板引擎一起工作。

1

我猜kozmic的解决方案应该是:

JSP:

<s:if test="hasActionErrors()"> 
    <div class="errors"> 
     <s:actionErrors/> 
    </div> 
</s:if> 

CSS:

div .errors li { list-style: none; } 

它并没有为我与他的CSS代码工作。

0

我知道这是一个老问题,但我想分享我的简单解决方案。这只是打印出每个错误消息,没有任何额外的生成的HTML标记。然后,如果需要,可以将<s:property value="%{error}"/>包装在一些自定义html中。

<s:if test="hasActionErrors()"> 
    <s:iterator var="error" value="%{actionErrors}"> 
     <s:property value="%{error}"/> 
    </s:iterator> 
</s:if>