您的位置:首页 > 编程语言 > Java开发

struts2 错误消息显示(s:fielderror )的时候老有前面的那个黑点,郁闷死了,感觉特别不爽,下面总结了集中解决的方法

2013-12-30 23:19 351 查看
   在表单校验,类型转换,文件上传时的错误消息显示是时老出现那个黑点,感到无比的郁闷,在网上找到了一些解决的方法,下面总结一下常用的一个方法:

    
1. 用CSS样式来控制将前面显示的黑点去掉,这种虽然显示好像没什么问题,但是标签仍然存在,看起来也不爽(我觉得还是不用这个)。

     2. 可以直接用  ${FieldErrors.fieldName[0]}获取fileName就是用来取出的是哪个字段的消息(这个方法可行,不过好像也有点不爽,

)。

        3.  其实struts2是用freemarker模板来显示出错信息的,

                *  在html中的显示如下:                

<ul  class="errorMessage"  style="color:red" >
<li><span>用户名为空!!</span></li>
<li><span>密码不能为空!!</span></li>
</ul>
       struts2搜索模板是先从/WEB-INF/classes搜索,也就是我们在src目录下,struts2为我们提供了一些主题,xhtml是默认的主题,当然我们可以修改它的默认主题可以配置相应  的常量,我们设置为simple主题,如下:

       (1)在struts.xml文件配置常量(推荐),只需要做如下的配置:

               <constant name="struts.ui.theme" value="simple"></constant>

           (2) 在struts.properties文件中配置(不推荐),如下

                           struts.ui.theme=simple

       如果前面2个都配置了,则(2)配置的会覆(1)配置的。

找到struts2-core-2.3.15.jar下面的template.simple然后将fielderror.ftl,actionmesage.ftl,actionerror.ftl解压出来,在到src目录下面新建一个包template.simple,将上面解压的3个ftl文件复制到template.simple包下,在修改里面的内容,只需要将对应的ul,li,span标签删除就行,其他不要改,我修改过后的actionerror.ftl文件的内容如下:

   <#if (actionErrors?? && actionErrors?size > 0)>

    <#list actionErrors as error>

        <#if error?if_exists != "">

            <#if parameters.escape>${error!?html}<#else>${error!}</#if>

        </#if>

    </#list>

</#if>

fielderror.ftl如下:

<#if fieldErrors??><#t/>
<#assign eKeys = fieldErrors.keySet()><#t/>
<#assign eKeysSize = eKeys.size()><#t/>
<#assign doneStartUlTag=false><#t/>
<#assign doneEndUlTag=false><#t/>
<#assign haveMatchedErrorField=false><#t/>
<#if (fieldErrorFieldNames?size > 0) ><#t/>
<#list fieldErrorFieldNames as fieldErrorFieldName><#t/>
<#list eKeys as eKey><#t/>
<#if (eKey = fieldErrorFieldName)><#t/>
<#assign haveMatchedErrorField=true><#t/>
<#assign eValue = fieldErrors[fieldErrorFieldName]><#t/>
<#if (haveMatchedErrorField && (!doneStartUlTag))><#t/>
<#assign doneStartUlTag=true><#t/>
</#if><#t/>
<#list eValue as eEachValue><#t/>
<#if parameters.escape>${eEachValue!?html}<#else>${eEachValue!}</#if>
</#list><#t/>
</#if><#t/>
</#list><#t/>
</#list><#t/>
<#if (haveMatchedErrorField && (!doneEndUlTag))><#t/>
<#assign doneEndUlTag=true><#t/>
</#if><#t/>
<#else><#t/>
<#if (eKeysSize > 0)><#t/>
<#list eKeys as eKey><#t/>
<#assign eValue = fieldErrors[eKey]><#t/>
<#list eValue as eEachValue><#t/>
<#if parameters.escape>${eEachValue!?html}<#else>${eEachValue!}</#if>
</#list><#t/>
</#list><#t/>
</#if><#t/>
</#if><#t/>
</#if><#t/>


其他的2个按照上面的修改就行,建议去安装个freemarker的插件,这样看起来更舒服,

最后就可以在页面上显示就OK了,如下:

      
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐