首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

【解决】关于Struts2 Checkbox标签回埋的办法

2012-09-10 
【解决】关于Struts2 Checkbox标签回填的办法???? Struts2自带着许多标签,控制和数据部分的使用较多,UI部分

【解决】关于Struts2 Checkbox标签回填的办法

???? Struts2自带着许多标签,控制和数据部分的使用较多,UI部分的标签其实用得并不多,但实然用到了,有时可能会让你措手不及,就拿Checkbox标签的回填来说。

?

??? Struts2对Checkbox标签的描述如下:

Description

Renders an HTML input element of type checkbox, populated by the specified property from the ValueStack.

?

??? 生成一个类型为checkbox的HTML input 元素,显示值栈中一个指定的属性。(本人英语一般,若翻译不当,请见谅【解决】关于Struts2 Checkbox标签回埋的办法

?

??? 从以上的意见得知,Checkbox标签在页面编译后,会自动转成对应的HTML代码,

?

<input type="checkbox" name="name" value="name" checked="checked" id="name"/><input type="hidden" id="__checkbox_name" name="__checkbox_name" value="name" /><label for="name" name="code"><s:checkbox label="测试2" name="name" value="false" fieldValue="name" />

??? 大家会发现编译后的HTML代码除了产生一个checkbox类型的input元素,同时也产生对应的一个隐藏域元素,对于这个隐藏域的作用,还未研究。(这次主要讲回填的,先忽略)

?

??? 重点:在Checkbox这个标签中,有两个关键的属性(value 和 fieldValue) ,先来看看Struts2给出的官方文档说明。

?

?? value:Preset the value of input element. (事先调整input元素的值)

?

?? fieldValue: The actual HTML value attribute of the checkbox(checkbox真实的HTML 属性值)

?

? 从以上的解释来看,Struts2 Checkbox这个标签的特别之处在于 value值并不是真正代表这个复选框的属性,而???? fieldValue值才是真正的属性值。

?

? 情景一:

??? JSP中的代码(无fieldValue属性):

<s:checkbox label="测试2" name="name" value="false" />

??? 编译后的HTML:

<input type="checkbox" name="name" value="true" id="name"/><input type="hidden" id="__checkbox_name" name="__checkbox_name" value="true" /><label for="name" name="code"><s:checkbox label="测试2" name="name" value="false" fieldValue="name" />

????编译后的HTML:

?

<input type="checkbox" name="name" value="name" id="name"/><input type="hidden" id="__checkbox_name" name="__checkbox_name" value="name" /> <label for="name" name="code"><s:checkbox label="测试2" name="name" value="true" />

??? 编译后的HTML:

<input type="checkbox" name="name" value="true" checked="checked" id="name"/><input type="hidden" id="__checkbox_name" name="__checkbox_name" value="true" /><label for="name" name="code"><s:checkbox label="测试2" name="name" value="true" fieldValue="%{name}" /><!--OGNL表达式 用%{}区别-->

??? 编译后的HTML:

<input type="checkbox" name="name" value="aaa" checked="checked" id="name"/><input type="hidden" id="__checkbox_name" name="__checkbox_name" value="aaa" /><label for="name" name="code"><s:if test="%{name=='aaa'}"><s:checkbox label="测试1" name="name" value="true" fieldValue="%{name}" /></s:if><s:else><s:checkbox label="测试2" name="name" value="false" fieldValue="bbb"/></s:else>

补充:根据value属性中的值(true or false)判断是否选中,所以也可以使用三目运算符,

例如:1=1?'true':'false',或者是 1=1?'1:0 (非0的都表示真,0表示假) ;

? ?实现回填的方式还有其他的,大家也可以搜索一下,如使用JavaScript,这里我就不重复说明了。

?? 个人总结,Struts2 checkbox适用的场景为“是、否;有、无;符合、不符合;男、女”等这样的情况;如果选择的项目较多,应该使用checkboxlist标签为佳!

?

??? 备注:Struts2版本为2.2.1

热点排行