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

struts的ui标签,theme(主题)(如何去掉fielderror actionerror actionmessage前的小点,让其按自己要求显示的5种方法)

2010-11-19 16:41 585 查看
主题:ui标签使用比较复杂,与JavaScript结合也不是太完美,因此,struts2的标签用得并不多。 Theme主题,在struts中表示用来显示html的主题。在core包下的org.apache.struts2的default.properties有struts.ui.theme=xhtml,(指定默认主题为xthml),主题有4中,simple,xhtml,css_xhtml,ajax。struts.ui.templateDir=template(指定主题的默认路径)。变换了主题,在客户端的显示就会进行相应的改变,可以通过查看源文件(ie的源文件),来查看相关的变化。我们发现

 
fielderror:
 
 
actionerror:
 
 
actionmessage:
 
前面都会出现一个小点,这个小点看着让人不舒服,如何去掉这个小点呢,首先我们可以从值栈中直接取值。除了这种方法还有以下4种方法去掉这个小点。在去掉这个小点前,看看struts2的这几个标签为什么会产生这个小点?查看ie源文件可以发现,这个标签前都被解释成了<ul><li></li></ul>,即使simple主题也是如此。那么要消除显示时的小点就必须消除<ul>和<li>标签。
第一种方法:用css消除小点。首先定义一个css文件,内容如下: @CHARSET "UTF-8"; .errorAndmes{ font-family:Arial, Helvetica, sans-serif; font-size:15px; color:#FF0000; vertical-align:middle; } .errorAndmes ul{ list-style-type:none; margin:0px; padding:3px; vertical-align:middle; } .errorAndmes ul li{ list-style-type:none; } 在相关页面中引入该css: 将标签放在一个div里,div的class为:errorAndmes。

 
这种情况下,ul 和li仍然存在,只是已经不显示了。

 

第二种方法:既然struts2的标签在转换成html时,对 变成的css类为:errorMessage,errorMessage,actionMessage。我们就可以定义自己的css类来覆盖原来的,达到相同的效果。

 

第三种方法:struts.ui.templateDir=template 在struts2中这个目录是存放主题的目录,里面存放了4中主题,所有的主题均采用freemarker(模板语言)编写。Struts2规定先到项目的src的目录下寻找主题,找不到时才到自己的目录下去找。因此我们可以在src下建立template,然后添加simple目录,在这个目录下建立actionerror.ftl,actionmessage.ftl,fielderror.ftl,就可以了。这些模板是自己可以修改的。

修改后的actionerror.ftl:

<#if (actionErrors?? && actionErrors?size > 0)> <#list actionErrors as error> <#if error?if_exists != ""> <#if parameters.escape>${error!?html}<#else>${error!}<#rt/><#rt/>

修改后的actionmessage.ftl: <#if (actionMessages?? && actionMessages?size > 0 && !parameters.isEmptyList)> <#list actionMessages as message> <#if message?if_exists != ""> <#if parameters.escape>${message!?html}<#else>${message!}

修改后的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/> <#if parameters.id?if_exists != ""> id="${parameters.id?html}"<#rt/> <#if parameters.cssClass??> class="${parameters.cssClass?html}"<#rt/> <#else> class="errorMessage"<#rt/> <#if parameters.cssStyle??> style="${parameters.cssStyle?html}"<#rt/> > <#assign doneStartUlTag=true><#t/> <#t/> <#list eValue as eEachValue><#t/>

${eEachValue}<#t/> <#t/> <#t/> <#t/> <#if (haveMatchedErrorField && (!doneEndUlTag))><#t/>

<#assign doneEndUlTag=true><#t/> <#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!} <#t/> <#t/> <#t/> <#t/> <#t/>

 

第四种方法:定义自己的第5中主题。在struts.xml文件指定自己主题的名字
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐