想必Struts下拉框(drop-down list)的使用也不是什么新知识了,个人只是结合最近项目中的使用作一些总结。呵呵...
1. 初学java web编程时的用法,这里就说一下当时的用法吧,就不详细追究了
比如说: form提交,然后是Action取值,这没什么说的; 要说的Update页面的自动充值, 采用js去判断form中的值,然后再去修改,对应option的selected属性,达到充值的效果,嘿嘿,有点欺骗的感觉,没有实现自动化。
2. Struts 1的html:select的自动充值:
<html:select property="property">
<html:options collection="collection" property="key" labelProperty="value" />
</html:select>
这里的property属性,是你表单提交后, form bean所对应的属性, 也就是最终Action要拿的值。
这里在加载本页面之前要去请求另外一个Action,去取得你要显示的数据集,我用的是Map,然后将你的collection放到request中, request.setAttribute("collection", collection); 这样加载完页面后就可以看到你的数据被显示在select下拉框中。 补充一下: <html:options>的property属性是html option中对应的value, labelProperty是<option>与</option>间的值,也就是页面上看到的值。
2.1 这样的话,Create就没问题了。
2.2 至于Update的页面,也是要完成request.setAttribute("collection", collection); form bean的属性仍然是db中查询出来的值。 这样页面中就会自动充值了,你会看到Update页面中select框的值是你Create时选择的值
3. Struts 2中的s:select的使用
<s:select id="type" name="type" list="#request.typeList" listKey="text" listValue="text" headerKey="" headerValue="-- 请选择类型 --"></s:select>
Struts2的标签比1中更强大了。 id属性,该控件的唯一标识; name, Action对应的属性; list,这里的这里的值跟Struts1里面collection相似,若list是List, Set, 则listKey="text" listValue="text"可设成text; 若listKey是Maplist为map的key, listValue为map的value, headKey与headValue是select的第一条显示的值,为可选项。