struts2 中的ui标签的学习总结

今天学习了struts2 中的ui标签,现在分享一下学习的总结,希望大神们指正赐教!

UI组件标签的作用:更整洁、更快捷的页面构建; 将表单字段绑定到ValueStack属性;与类型转换、数据验证以及国际化集成;

       首先, UI 标签确实用于生成 HTML 标记,标签名与 HTML 标记几乎一致,而且属性也基本对应到 HTML 元素的属性上。但 UI 标签不仅限于此,它的特点在于“编写的少,而得到的多”。

      绑定 vs:这种绑定是双向的。当表单提交时,来源于表单字段的数据会流向框架并且自动被转移到ValueStack 上,这一点在“数据转移和类型转换”一章我们已经详细解释。另一方面, ValueStack上的数据能够流向表单来预填充表单。

Struts2 能够自动处理 value 属性。
         对于类型转换和数据验证,在问题发生时 UI 组件能够自动处理错误消息。类型转换和数据校验出现的问题会导致请求将用户带回输入表单。当这些情况发生时,UI 组件会自动检测与自己相关的错误消息是否存在,并且显示相应的错误消息。我们可以自定义这些错误消息,甚至能够与国际化的特性结合起来为用户提供本地化的错误消息。

模板和主题

        Struts 2 所有的 UI 标签都是基于主题和模板的。模板定义了输出 HTML 标记的流程,之所以称之为模板,是因为它是参数化的,它需要标签解析组件为其提供数据。整个过程有点像一个迷你的 MVC。Struts2 的 JSP 标签处理类也是继承自 TagSupport,它的特别之处在于根据框架自身特点对标签处理类做了一些抽象,另外在标签处理类中, 不负责输出 (我们自定义标签是怎样做的?)而是收集数据之后转发到一个模板,由模板来输出 HTML 元素,这便是我们称之为迷你 MVC的原因。
这个模板可以是 JSP,但 Struts2 内部采用了 FreeMarker。  FreeMarker 是一个模板引擎,一个基于模板生成文本输出的通用工具。虽然 FreeMarker 具有一些编程的能力,但通常由 Java程序准备要显示的数据,由 FreeMarker 生成页面。具体来看一下 text.ftl 的内容如何对应生成的 HTML 元素,我们就会清楚它是怎么工作的了。

常用UI标签

①form标签:输出一个HTML表单
action 可选  指定提交的action。不要添加.action后缀
namespace method
enctype上传文件时设为multipart/form-data
foucusElement 指定某个元素id,页面加载该元素具有焦点
validate  是否执行客户端验证。只有使用xhtml或者ajax主题时候有效


②submit标签  用于输出一个提交按钮
inputimagebutton
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>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值