标签:
当在我们注册用户时,如果给前台的提示是用户名重复并且用户名太长时,就会要往action里面添加多个errors,这时到前台怎么把它依次拿出来
解决办法
1.我想到的解决办法就是在后台相应的action处作判断,最终给一个错误信息出来,只不过这个错误信息可能会经过判断综合到一起(后台加工)。也就是说我们可以从value stack里面拿值
<s:property value=”fielderror.name[0]”/>
2.用struts2的<s:fielderror/>标签可以拿到所以的错误信息,但是有自己的格式,要想办法去掉他的格式 办法:把struts强加的样式覆盖掉,也可以把它的样式手动设为none
.errorMessage{
list-style-type: none;
}
但是这样还是有ul li 从而有换行的效果那么如何去掉ul li ?这个还是有点麻烦的
1.把strut-core包解压可以看到template-simple-fielderror.ftl文件把最后一分
<ul<#rt/>
<#if parameters.cssClass??>
class="${parameters.cssClass?html}"<#rt/>
<#else>
class="errorMessage"<#rt/>
</#if>
<#if parameters.cssStyle??>
style="${parameters.cssStyle?html}"<#rt/>
</#if>
>
<#list eKeys as eKey><#t/>
<#assign eValue = fieldErrors[eKey]><#t/>
<#list eValue as eEachValue><#t/>
<li><span><#if parameters.escape>${eEachValue!?html}<#else>${eEachValue!}</#if></span></li>
</#list><#t/>
</#list><#t/>
</ul>改成
<#list eKeys as eKey><#t/>
<#assign eValue = fieldErrors[eKey]><#t/>
<#list eValue as eEachValue><#t/>
<span><#if parameters.escape>${eEachValue!?html}<#else>${eEachValue!}</#if></span>
</#list><#t/>
</#list><#t/>
也就是去掉ul li 然后打包再放回去
2.一般这样破坏了别人的封装,struts里面可以采取覆盖的形式具体如下:
在struts.xml里面配置常量也就是规定我们使用哪个样式,然后好改相应的struts样式
<constant name="struts.ui.theme" value="simple" />
然后在src目录下新建包template .simple (要按顺序建两次)然后把修改过的filederror.flt文件放到里面去,重启项目,就会看到ul li 不见了这时你想加什么样式 随便你了
3.可以定义自己的主题
在struts.xml里面配置常量
<constant name="struts.ui.theme" value="mytheme" />
当然这样我们就得把strutscore里面的simple整个文件夹里面的内容全部放到template-mytheme下面了,并且修改我们的fielderror.flt文件
最后struts的所有标签,只有fielderror给我们加css,当我们改完fielderror之后上,其它的标签我们还是用theme=”simple”这个主题
<constant name="struts.ui.theme" value="simple" /> 其中theme=”xhtml”是默认的
标签:
原文地址:http://www.cnblogs.com/feng666/p/4374545.html