Struts中html:optio 的使用
文章作者 100test 发表时间 2008:02:01 15:43:56
来源 100Test.Com百考试题网
html:options是Struts中比较复杂的一个tage lib,用法灵活,但是Sturts提供的源码exercise taglib中没有提出常用jsp ActionForm这样形式的最直接的总结,现从中总结如下,分两种情况:数组和Collection。 需求,要达到: Label 0 Label 1 Label 2 Label 3 Label 4 Label 5 Label 6 Label 7 Label 8 Label 9 要实现上述效果,需要两步: 第一:设置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,0selected有两种,单选和多选: 在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语句如下: 其中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 0selected = "Magazine". public String getSelected() { return 0selected. } public void setSelected(String 0selected) { this.0selected = 0selected. } 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中: Struts标签库的使用还是需要小心,不必完全使用Struts的标签库,个人感觉Struts这种替代Html语句的标签库有一种牵强附会,给使用者掌握带来难度,使用者除熟悉html外,还必须理解Struts的对应标签库用法,而且这种调试出错,问题也无法准确定位,总是抽象地告诉你,no bean 或no form