Struts2自定义Theme

1. Struts2 Theme与WebWork Theme
     用法上是一样的,几乎没有差别,默认都是xhtm,区别就是将WebWork的配置改成了Struts的配置

2. Theme的作用
     Theme可以理解为模版,struts ui标签都有与之对应的模版,可以解压struts2-all-2.0.1.jar来看看,里面有template目录,打开xhtm查看struts ui标签对应的模版。我认为theme的作用如下:
    1) 统一考虑控件的外观和行为。例如对于文本框,有必填和非必填的,那么我们可以定制必填文本框的模版,在文本框后面带上红色的"*",并且带required校验。
    2) 统一的布局风格,我们只关注内容而不必关注布局。例如对form,一个应用中有多个查询界面,所有的查询界面都采用同样的form模版,保持统一的风格。

3. 定制Theme
   1) 在WEB-INF下建立文件夹themes/mytheme
   2) 配置struts.properties,指定使用的theme
           struts.ui.theme = mytheme
           struts.ui.templateDir = /WEB-INF/themes
   3) text.ftl
   普通文本框

<input type="text"<#rt/>
 name="${parameters.name?default("")?html}"
<#rt/>
<#if parameters.get("size")?exists>
 size="${parameters.get("size")?html}"
<#rt/>
</#if>
<#if parameters.maxlength?exists>
 maxlength="${parameters.maxlength?html}"
<#rt/>
</#if>
<#if parameters.nameValue?exists>
 value="
<@s.property value="parameters.nameValue"/>"<#rt/>
</#if>
<#if parameters.disabled?default(false)>
 disabled="disabled"
<#rt/>
</#if>
<#if parameters.readonly?default(false)>
 readonly="readonly"
<#rt/>
</#if>
<#if parameters.tabindex?exists>
 tabindex="${parameters.tabindex?html}"
<#rt/>
</#if>
<#if parameters.id?exists>
 id="${parameters.id?html}"
<#rt/>
</#if>
<#if parameters.cssClass?exists>
 class="${parameters.cssClass?html}"
<#rt/>
</#if>
<#if parameters.cssStyle?exists>
 style="${parameters.cssStyle?html}"
<#rt/>
</#if>
<#if parameters.title?exists>
 title="${parameters.title?html}"
<#rt/>
</#if>
/>

required text

<input type="text"<#rt/>
 name="${parameters.name?default("")?html}"
<#rt/>
<#if parameters.get("size")?exists>
 size="${parameters.get("size")?html}"
<#rt/>
</#if>
<#if parameters.maxlength?exists>
 maxlength="${parameters.maxlength?html}"
<#rt/>
</#if>
<#if parameters.nameValue?exists>
 value="
<@s.property value="parameters.nameValue"/>"<#rt/>
</#if>
<#if parameters.disabled?default(false)>
 disabled="disabled"
<#rt/>
</#if>
<#if parameters.readonly?default(false)>
 readonly="readonly"
<#rt/>
</#if>
<#if parameters.tabindex?exists>
 tabindex="${parameters.tabindex?html}"
<#rt/>
</#if>
<#if parameters.id?exists>
 id="${parameters.id?html}"
<#rt/>
</#if>
<#if parameters.cssClass?exists>
 class="${parameters.cssClass?html}"
<#rt/>
</#if>
<#if parameters.cssStyle?exists>
 style="${parameters.cssStyle?html}"
<#rt/>
</#if>
<#if parameters.title?exists>
 title="${parameters.title?html}"
<#rt/>
</#if>
/>
<span style="color:red">*</span>

下面的一行使用requiredtext模版
<s:textfield label="%{getText('username')}" name="username" template="requiredtext.ftl"/>

参考:http://www.jscud.com/srun/news/viewhtml/4_2006_3/182.htm

posted @ 2008-09-28 11:06  wyl232  阅读(820)  评论(0编辑  收藏  举报