struts2 错误消息显示(s:fielderror )的时候老有前面的那个黑点,郁闷死了,感觉特别不爽,下面总结了集中解决的方法
2013-12-30 23:19
351 查看
在表单校验,类型转换,文件上传时的错误消息显示是时老出现那个黑点,感到无比的郁闷,在网上找到了一些解决的方法,下面总结一下常用的一个方法:
1. 用CSS样式来控制将前面显示的黑点去掉,这种虽然显示好像没什么问题,但是标签仍然存在,看起来也不爽(我觉得还是不用这个)。
2. 可以直接用 ${FieldErrors.fieldName[0]}获取fileName就是用来取出的是哪个字段的消息(这个方法可行,不过好像也有点不爽,
)。
3. 其实struts2是用freemarker模板来显示出错信息的,
* 在html中的显示如下:
(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了,如下:
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了,如下:
相关文章推荐
- Struts2 Error filterStart异常的解决方法总结
- struts2传文件时出现错误及解决和显示方法
- CentOS7-error while loading shared libraries: 错误解决方法总结
- Struts2中内存溢出(java.lang.OutOfMemoryError)异常错误介绍和解决方法
- [SDK]新浪微博请求授权显示错误页面的解决方法(error:redirect_uri_mismatch)
- Asp.net中建立MS office组件时出现“拒绝访问”和“消息筛选器显示应用程序正在使用中”错误的解决方法
- [SDK]新浪微博请求授权显示错误页面的解决方法(error:redirect_uri_mismatch)
- eclipse4下面安装ADT成功后,但没有ADT的那个图标显示的解决方法
- Struts2 Error filterStart异常的解决方法总结 推荐
- 解决 Mysql在备份的时候显示 1728 mysql.proc错误的方法
- [SDK]新浪微博请求授权显示错误页面的解决方法(error:redirect_uri_mismatch)
- IIS 添加网站显示错误消息 “无更多可用的内存以更新安全信息” 解决方法
- ArcGIS Field Calculator 计算,错误 “Error running VBA code: 语句未结束” 解决方法
- IIS 添加网站显示错误消息 “无更多可用的内存以更新安全信息” 解决方法
- 转载:Struts2 Error filterStart异常的解决方法总结
- Struts2验证错误信息的两个经典方法-addFieldError&addActionError
- struts2利用<s:fielderror/>等标签详细地控制错误消息输出格式
- 在IIS7.5打开网页的时候,提示: HTTP 错误 500.0 - Internal Server Error 调用 LoadLibraryEx 失败,在 ISAPI 筛选器 "C:\Windows\Microsoft.NET\Framework\v4.0.30319\\aspnet_filter.dll" 上。解决方法
- Struts2验证错误信息的两个经典方法-addFieldError&addActionError
- 在连接Mysql的时候,报下面的错误及解决方法