选择标签: 必须是select与其他标签如:option,options和optionsCollection配合使用
<html:select property="selectedCareers" multiple="true">
<html:optionsCollection
name="tagInfo"
property="careers"
value="id"
label="value"
filter="false"/>
</html:select>
Select标签里的property与ActionForm的selectedCareers绑定,它表示用户已经选择过的选项,可以是一个(selectedCareers是个String)或多个(selectedCareers是个数组)。Multiple属性表示这个选择列表render出来以后是否允许多选。ActionForm里相对select控件的属性,是单值还是数组类型,就是由这个multiple属性所决定的。如果select tag里的property的值与optionsCollection tag里的value的值一样的话,该选项当页面初始化的时候就会被选中,selected="selected"会被插入html代码。
optionsCollection标签表示选择列表里面的选项。它与ActionForm没有关系。它里面的值是由在可用范围里的一个叫tagInfo的对象决定的。Property则表示是tagInfo的哪个属性(该属性应该是一个集合类型)。Value表示选项的值(即被提交的值)与tagInfo对象的careers属性的id属性相对应。Label表示选项的文本,与tagInfo对象的careers属性的value属性相对应。
其实也是两个数组的嵌套,这与MultiBox标签很相似,只不过MultiBox标签外层是所有可选项,内层是以被选过的项,而Select标签则恰恰相反。
Filter属性表示是否对label里面的内容进行HTML敏感字符过滤。比如内容中含有<b>
如果要过滤(true,也是default设置),则生成的html代码为:<b>
若不要过滤(false) ,则生成的html代码为:<b>
过滤后将字符完整打出来,不过滤则将字符隐藏并生成其应有效果。
<html:select property="selectedCareer" size="3">
<html:option key="opt.eg1" value="1" bundle="extended"/>
<html:option key="opt.eg2" value="2" bundle="extended"/>
<html:option key="opt.eg3" value="3"/>
</html:select>
这个例子表示静态从资源文件中取出信息赋给选项。资源文件中key所对应的value将成为选项的label,而option 的 value属性表示提交的值。
<html:options
collection="options" 必须是在可用范围内的一个集合类型对象
property="id" 集合中单个元素的属性,将会是选项的value,用于提交
labelProperty="value"/>集合中单个元素的属性,用于显示
也可以用options标签来输出多个选项,但没有optionsCollection用起来简单,且不能满足可用范围内的对象不是集合类型的情况。