Struts2 UI标签
主题和模板 所有UI标签基于主题和模板 一个模板就是使用JSP,Velocity或者Freemarker编写的文件,用于生成html,将一些具有共同观感的模板组织到一起就形成了主题。struts2使用目录名作为主题名,具有共同观感的模板文件放置在同一个目录下。
作为一个jsp页面中的ui标签,既可以设置该UI标签需要使用的模板,也可以设置该ui标签使用的主题,不推荐直接设置模板属性,而选择特定主题
设置主题方法: 优先级也是下面的顺序
1.通过设定特定UI标签上的tehme属性来指定主题
2.通过设定特定UI标签外围的Form标签的theme属性来指定主题
3.通过驱动的page会话范围内以theme为名称的属性来确定主题
4.通过取得request范围内以theme为名称的属性来确定主题
5. 通过取得session范围内以theme为名称的属性来确定主题
6. 通过取得application范围内以theme为名称的属性来确定主题
7.通过取得名为struts.ui.theme的常量(默认值是xhtml)来确定主题,该变量可以在struts.properties文件或者struts.xml文件中确定。
内建主题:
simple(默认主题) , xhtml , css_xhtml , ajax
xhtml ,css_xhtml主题都是对simple主题的包装和扩展
simple主题,每个UI标签只生成一个简单的html元素,不会生成其它额外的内容
xhtml主题,Strutss的默认主题,对simple进行了扩展,在该主题的基础增加如下附加特性
1.针对html标签使用标准的两列表格布局
2.每个html标签的label,既可以出现在html元素的左边,也可以出现上边,取决于lableposition属性的设置
3.自动输出校验错误信息
4. 输出javascript的客户端校验
css_html 对xhtml主题上加入css样式控制
ajax对xhtml主题 上为每个标签提供了额外的ajax支持。ajax支持是以dojo和dwr为基础的
增加如下功能
1.增加ajax方式的客户端校验
2.支持远程表单的异步提交(最好和submit标签一起使用)
3.提供高级的div标签,允许实现局部更新html的功能
4.提供高级的a标签,允许动态加载并执行远端的javaScript代码
5.提供支持ajax的tabbedPanel
6.提供富客户端模型的pub-sub事件模型
分为 表单标签 和 非表单标签
表单标签 from标签和某个表单元素的标签
form textfield password radio checkbox
checkboxlist select doubleselect combobox optiontrasferselect
optgroup updownselect textera hidden file
reset submit token head label
通用属性都继承了UIBean类
①与模板相关的属性,可以指定表单标签所用的模板和主题的
templateDir String 指定模板目录
theme String指定主题名称
template String 指定模板名称
②与javaScript相关的属性其中主题为simple
onclick onchange onmousedownonmouseover onmouseout
onfocus onblur onselect
onkeyup(松开) onkeydown(按下) onkeypress(表单上单击某字符键)
ondblckick(表单元素上双击)
③工具相关的属性
tooltip String 设置此组件工具提示
tooltipConfig String 设置工具提示的各种属性
④表单标签的通用属性
cssClass cssStyletitle disabled
label(表单元素关联lable) labelposition(label位置)
requiredposition(指定必填标记 “+” )name(表单name映射与action对应) required(是否在表单元素的lable上添加+)
tableindex value key(设置表单元素对应的action的属性名)
⑤所有的表单元素标签都存在一个特殊的属性 form 。
作用:引用表单元素所在的表单,通过该form属性可以实现表单元素和表单之间的交互
通过${parameters.form.id}取得表单元素所在表单的ID
name value属性详解:
name属性会映射到Action中的属性名称,value属性则代表此属性的值。
推荐第一种,struts2已经自动处理了属性内容的赋值工作
①将下面文本框的值绑定到Action的person属性的firstName
<s:textfield name="person.firstName" />
②使用表达式生成表单元素的值
<s:textfield name="person.firstName" value="${pserson.firstName}"/>
提供了大量的表单标签,大部分的表单标签和HTML表单元素之间有一一对应的关系
常用和特殊的表单标签:
①form标签:输出一个HTML表单
action 可选 指定提交的action。 不要添加.action后缀
namespace method
enctype 上传文件 时设为multipart/form-data
foucusElement 指定某个元素id,页面加载该元素具有 焦点
validate 是否执行客户端验证。 只有使用xhtml或者ajax主题时候有效
②submit标签 用于输出一个提交按钮
input imagebutton
type [input image button] src[ 为image类型的图片地址]
action[指定处理请求的action]method [指定处理请求的action方法]
③textfield标签,一个单行文本框
maxlength [输入字符最大长度] readonly[只读] size[可视尺寸]
④password标签,输出一个口令输入框
maxlength [输入字符最大长度] readonly[只读] size[可视尺寸] showPassword[是否显示密码]
⑤textarea,输出一个多行文本框
cols[列] rows[行] readonly[只读] wrap[是否换行]
⑥select 输出一个下拉列表框 必须指定list属性指定集合[普通集合 map 集合中的对象实例]
list[迭代的集合 如果为Map 则key成为选项的value map的value则成为选项的内容]
multiple[是否多选]
size[显示的选项个数]
listkey[指定集合中那个属性作为选项的value]
listvalue[指定集合中对象中的那个属性作为选项的内容]
headerKey[如果选择了header,提交的value如果使用该属性不能设为空值]
headerValue[显示在header选项内容]
emptyOption[是否在header后添加一个空选项]
常用表单标签用法
<s:form>
<s:textfield name="username" label="用户名:">
<s:password name="password" label="密码:">
<s:textarea name="personal" cols="30" rows=“5” label="个人简介:">
<s:select name="education" label="最高学历"
list="#{ 1 : ' 高中 ' , 2 : ' 大学 ' }"/>
<s:submit value="提交">
<s:form>
特殊标签
①checkbox checkboxlist【多选】 可以一次创建多个复选框。用于生成多个check boxhtml标签 必须指定list
list 必须 指定要迭代迭代的集合。如果是map 则key成为value value成为内容
listKey 指定集合对象的那个属性作为属性key
listValue 制定集合对象的那一个属性作为选项的内容
②combobox 生成一个单行文本框和下拉列表框的结合,但两个表单元素只对应一个请求参数,只有单行文本框内的值才包含请求参数,而下拉列表框只是辅助输入
list 必须 生成各个选项
maxlength 大行文本框输入字符的最大长度
readonly size 可视尺寸和只读
③doubleselect 比较有用 生成一个级联列表。为两个列表框设定选项
list listkey listvalue headerkeyheadervalue emptyOptionmultiple size
doubleid doublelistdoublelistkey doublelistvaluedoublesize doublenamedoublevalue
④head用于声称html的head 用于声称对CSS和js的引用
使用 theme="ajax"可以讲Ajax的头信息包含在页面中
⑤token 防止多次提交 避免刷新页面多次提交
在struts2配置文件中启用TokenInteceptor或者TokenSessionStoreInterceptor 拦截器
原理在表单添加一个隐藏域,每次加在页面页面的值不同。而拦截器拦截隐藏域的值如果两次值相同则组织表单提交。
<s:from><s:token/></s:from>
特殊表单标签用法
<s:head />
<s:form name="test">
<s:checkboxlist name="interest"
list="{'1','2','3','4'}"
label="兴趣"/>
<s:combobox label="信息渠道" name="channel"
list = " { ' 1 ' , ' 2 ' , ' 3 ' } "headerkey="-1"
headerValue="请选择"
emptyOption="true"/>
<s:doubleselect
lable="所在省" name="province"list = " { ' 1 ' , ' 2 ' , ' 3 ' } "doubleList="top == ' 1 ' ? { ' 1 ' , ' 2 ' , ' 3 ' }
: top==' 2 ' ? { ' 1 ' , ' 2 ' , ' 3 ' }: top==' 3 ' ? { ' 1 ' , ' 2 ' , ' 3 ' }
"/>
</s:form>
非表单标签
a href[生成url地址]
actionerror actionmessage 输出信息。前者输出action实例的getActionError方法返回值
后者输出getActionMessage()方法的返回值
actino中通过 addActionError addActionMessage方法添加
主题和模板 所有UI标签基于主题和模板 一个模板就是使用JSP,Velocity或者Freemarker编写的文件,用于生成html,将一些具有共同观感的模板组织到一起就形成了主题。struts2使用目录名作为主题名,具有共同观感的模板文件放置在同一个目录下。
作为一个jsp页面中的ui标签,既可以设置该UI标签需要使用的模板,也可以设置该ui标签使用的主题,不推荐直接设置模板属性,而选择特定主题
设置主题方法: 优先级也是下面的顺序
1.通过设定特定UI标签上的tehme属性来指定主题
2.通过设定特定UI标签外围的Form标签的theme属性来指定主题
3.通过驱动的page会话范围内以theme为名称的属性来确定主题
4.通过取得request范围内以theme为名称的属性来确定主题
5. 通过取得session范围内以theme为名称的属性来确定主题
6. 通过取得application范围内以theme为名称的属性来确定主题
7.通过取得名为struts.ui.theme的常量(默认值是xhtml)来确定主题,该变量可以在struts.properties文件或者struts.xml文件中确定。
内建主题:
simple(默认主题) , xhtml , css_xhtml , ajax
xhtml ,css_xhtml主题都是对simple主题的包装和扩展
simple主题,每个UI标签只生成一个简单的html元素,不会生成其它额外的内容
xhtml主题,Strutss的默认主题,对simple进行了扩展,在该主题的基础增加如下附加特性
1.针对html标签使用标准的两列表格布局
2.每个html标签的label,既可以出现在html元素的左边,也可以出现上边,取决于lableposition属性的设置
3.自动输出校验错误信息
4. 输出javascript的客户端校验
css_html 对xhtml主题上加入css样式控制
ajax对xhtml主题 上为每个标签提供了额外的ajax支持。ajax支持是以dojo和dwr为基础的
增加如下功能
1.增加ajax方式的客户端校验
2.支持远程表单的异步提交(最好和submit标签一起使用)
3.提供高级的div标签,允许实现局部更新html的功能
4.提供高级的a标签,允许动态加载并执行远端的javaScript代码
5.提供支持ajax的tabbedPanel
6.提供富客户端模型的pub-sub事件模型
分为 表单标签 和 非表单标签
表单标签 from标签和某个表单元素的标签
form textfield password radio checkbox
checkboxlist select doubleselect combobox optiontrasferselect
optgroup updownselect textera hidden file
reset submit token head label
通用属性都继承了UIBean类
①与模板相关的属性,可以指定表单标签所用的模板和主题的
templateDir String 指定模板目录
theme String指定主题名称
template String 指定模板名称
②与javaScript相关的属性其中主题为simple
onclick onchange onmousedownonmouseover onmouseout
onfocus onblur onselect
onkeyup(松开) onkeydown(按下) onkeypress(表单上单击某字符键)
ondblckick(表单元素上双击)
③工具相关的属性
tooltip String 设置此组件工具提示
tooltipConfig String 设置工具提示的各种属性
④表单标签的通用属性
cssClass cssStyletitle disabled
label(表单元素关联lable) labelposition(label位置)
requiredposition(指定必填标记 “+” )name(表单name映射与action对应) required(是否在表单元素的lable上添加+)
tableindex value key(设置表单元素对应的action的属性名)
⑤所有的表单元素标签都存在一个特殊的属性 form 。
作用:引用表单元素所在的表单,通过该form属性可以实现表单元素和表单之间的交互
通过${parameters.form.id}取得表单元素所在表单的ID
name value属性详解:
name属性会映射到Action中的属性名称,value属性则代表此属性的值。
推荐第一种,struts2已经自动处理了属性内容的赋值工作
①将下面文本框的值绑定到Action的person属性的firstName
<s:textfield name="person.firstName" />
②使用表达式生成表单元素的值
<s:textfield name="person.firstName" value="${pserson.firstName}"/>
提供了大量的表单标签,大部分的表单标签和HTML表单元素之间有一一对应的关系
常用和特殊的表单标签:
①form标签:输出一个HTML表单
action 可选 指定提交的action。 不要添加.action后缀
namespace method
enctype 上传文件 时设为multipart/form-data
foucusElement 指定某个元素id,页面加载该元素具有 焦点
validate 是否执行客户端验证。 只有使用xhtml或者ajax主题时候有效
②submit标签 用于输出一个提交按钮
input imagebutton
type [input image button] src[ 为image类型的图片地址]
action[指定处理请求的action]method [指定处理请求的action方法]
③textfield标签,一个单行文本框
maxlength [输入字符最大长度] readonly[只读] size[可视尺寸]
④password标签,输出一个口令输入框
maxlength [输入字符最大长度] readonly[只读] size[可视尺寸] showPassword[是否显示密码]
⑤textarea,输出一个多行文本框
cols[列] rows[行] readonly[只读] wrap[是否换行]
⑥select 输出一个下拉列表框 必须指定list属性指定集合[普通集合 map 集合中的对象实例]
list[迭代的集合 如果为Map 则key成为选项的value map的value则成为选项的内容]
multiple[是否多选]
size[显示的选项个数]
listkey[指定集合中那个属性作为选项的value]
listvalue[指定集合中对象中的那个属性作为选项的内容]
headerKey[如果选择了header,提交的value如果使用该属性不能设为空值]
headerValue[显示在header选项内容]
emptyOption[是否在header后添加一个空选项]
常用表单标签用法
<s:form>
<s:textfield name="username" label="用户名:">
<s:password name="password" label="密码:">
<s:textarea name="personal" cols="30" rows=“5” label="个人简介:">
<s:select name="education" label="最高学历"
list="#{ 1 : ' 高中 ' , 2 : ' 大学 ' }"/>
<s:submit value="提交">
<s:form>
特殊标签
①checkbox checkboxlist【多选】 可以一次创建多个复选框。用于生成多个check boxhtml标签 必须指定list
list 必须 指定要迭代迭代的集合。如果是map 则key成为value value成为内容
listKey 指定集合对象的那个属性作为属性key
listValue 制定集合对象的那一个属性作为选项的内容
②combobox 生成一个单行文本框和下拉列表框的结合,但两个表单元素只对应一个请求参数,只有单行文本框内的值才包含请求参数,而下拉列表框只是辅助输入
list 必须 生成各个选项
maxlength 大行文本框输入字符的最大长度
readonly size 可视尺寸和只读
③doubleselect 比较有用 生成一个级联列表。为两个列表框设定选项
list listkey listvalue headerkeyheadervalue emptyOptionmultiple size
doubleid doublelistdoublelistkey doublelistvaluedoublesize doublenamedoublevalue
④head用于声称html的head 用于声称对CSS和js的引用
使用 theme="ajax"可以讲Ajax的头信息包含在页面中
⑤token 防止多次提交 避免刷新页面多次提交
在struts2配置文件中启用TokenInteceptor或者TokenSessionStoreInterceptor 拦截器
原理在表单添加一个隐藏域,每次加在页面页面的值不同。而拦截器拦截隐藏域的值如果两次值相同则组织表单提交。
<s:from><s:token/></s:from>
特殊表单标签用法
<s:head />
<s:form name="test">
<s:checkboxlist name="interest"
list="{'1','2','3','4'}"
label="兴趣"/>
<s:combobox label="信息渠道" name="channel"
list = " { ' 1 ' , ' 2 ' , ' 3 ' } "headerkey="-1"
headerValue="请选择"
emptyOption="true"/>
<s:doubleselect
lable="所在省" name="province"list = " { ' 1 ' , ' 2 ' , ' 3 ' } "doubleList="top == ' 1 ' ? { ' 1 ' , ' 2 ' , ' 3 ' }
: top==' 2 ' ? { ' 1 ' , ' 2 ' , ' 3 ' }: top==' 3 ' ? { ' 1 ' , ' 2 ' , ' 3 ' }
"/>
</s:form>
非表单标签
a href[生成url地址]
actionerror actionmessage 输出信息。前者输出action实例的getActionError方法返回值
后者输出getActionMessage()方法的返回值
actino中通过 addActionError addActionMessage方法添加