Struts中html:options的使用

xiaoxiao2026-03-11  13

html:options是Struts中比较复杂的一个tage lib,用法灵活,但是Sturts提供的源码exercise taglib中没有提出常用jsp+ActionForm这样形式的最直接的总结,现从中总结如下,分两种情况:数组和Collection。需求,要达到:<select name="beanCollectionSelect" multiple="multiple" size="10"><option value="Value 0">Label 0</option><option value="Value 1" selected="selected">Label 1</option><option value="Value 2">Label 2</option><option value="Value 3" selected="selected">Label 3</option><option value="Value 4">Label 4</option><option value="Value 5" selected="selected">Label 5</option><option value="Value 6">Label 6</option><option value="Value 7">Label 7</option><option value="Value 8">Label 8</option><option value="Value 9">Label 9</option></select>

 

要实现上述效果,需要两步:第一:设置ActionForm,也分两小步:第一小步必须在ActionForm中,有一句private Collection beanCollection;public Collection getBeanCollection();Collection beanCollection要确保是一个实现,如ArrayList,如果不是则会报No collection found的错误,Struts的最大不方便就是一旦出问题,定位很难,不知道什么地方使用错误,或忘记设置什么了。因为前面需求中option的value值和label值不一样,那么在beanCollection中保存的就是一个value和label组成的对象,名为LabelValueBean,在LabelValueBean中有两个属性value和label,在程序某个地方要为beanCollection赋值,如:Vector entries = new Vector(10);entries.add(new LabelValueBean("Label 0", "Value 0"));entries.add(new LabelValueBean("Label 1", "Value 1"));entries.add(new LabelValueBean("Label 2", "Value 2"));entries.add(new LabelValueBean("Label 3", "Value 3"));entries.add(new LabelValueBean("Label 4", "Value 4"));entries.add(new LabelValueBean("Label 5", "Value 5"));entries.add(new LabelValueBean("Label 6", "Value 6"));entries.add(new LabelValueBean("Label 7", "Value 7"));entries.add(new LabelValueBean("Label 8", "Value 8"));entries.add(new LabelValueBean("Label 9", "Value 9"));

然后执行setBeanCollection(entries); 这样ActionForm中的beanCollection算有值了。 第二小步,需要设置Selected,selected有两种,单选和多选: 在ActionForm中必须有: private String singleSelect = "Single 5" ;public String getSingleSelect() {return (this.singleSelect);}public void setSingleSelect(String singleSelect) {this.singleSelect = singleSelect;} 或多选,多选必须是数组: private String[] beanCollectionSelect = { "Value 1" , "Value 3" , "Value 5" };public String[] getBeanCollectionSelect() {return (this.beanCollectionSelect);}public void setBeanCollectionSelect(String beanCollectionSelect[]) {this.beanCollectionSelect = beanCollectionSelect;} 第二:在Jsp中写入tang lib语句如下: <html:select property= "beanCollectionSelect" size= "10" multiple= "true" ><html:optionsCollection name= "testbean" property= "beanCollection" /></html:select> 其中testbean是ActionForm的名称。 以上是html:options的Collection解决方案,如果option值很少,简单地可以实现为数组,两步: 第一:在ActionForm中, private String values[] = { "Magazine" , "Journal" , "News Paper" , "Other" };private String labels[] ={ "L-Magazine" , "L-Journal" , "L-News Paper" , "L-Other" };private String selected = "Magazine" ;public String getSelected(){return selected;}public void setSelected(String selected){this.selected = selected;}public String[] getValues(){return values;}public void setValues(String[] values){this.values = values;}public String[] getLabels(){return values;}public void setLabels(String[] labels){this.labels = labels;}

第二步在jsp中:<html:select property=

 

"selected" ><html:options name="testbean" property="values" labelProperty="label"/></html:select>

 

 

[转自: http://www.cnblogs.com/stephencat/archive/2006/04/22/381898.html  ]

相关资源:敏捷开发V1.0.pptx
转载请注明原文地址: https://www.6miu.com/read-5045731.html

最新回复(0)