您现在的位置是:首页
>
html select标签 Struts 中 html:options 的使用
Strut 中 html:o tio 的使用 :o tio 是Strut 中比较复杂的一个tage li 用法灵活 但是Sturt 提供的源码exerci e tagli 中没有提出常用j +Ac

Struts 中 html:options 的使用
:options是Struts中比较复杂的一个tage lib 用法灵活 但是Sturts提供的源码exercise taglib中没有提出常用jsp+ActionForm这样形式的最直接的总结 现从中总结如下 分两种情况 数组和Collection 需求 要达到 <select name= beanCollectionSelect multiple= multiple size= > <option value= value >Label </option> <option value= value selected selected >Label </option> <option value= value >Label </option> <option value= value selected selected >Label </option> <option value= value >Label </option> <option value= value selected selected >Label </option> <option value= value >Label </option> <option value= value >Label </option> <option value= value >Label </option> <option value= value >Label </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( ); entries add(new LabelvalueBean( Label value )); entries add(new LabelvalueBean( Label value )); entries add(new LabelvalueBean( Label value )); entries add(new LabelvalueBean( Label value )); entries add(new LabelvalueBean( Label value )); entries add(new LabelvalueBean( Label value )); entries add(new LabelvalueBean( Label value )); entries add(new LabelvalueBean( Label value )); entries add(new LabelvalueBean( Label value )); entries add(new LabelvalueBean( Label value )); 然后执行setBeanCollection(entries); 这样ActionForm中的beanCollection算有值了 第二小步 需要设置Selected selected有两种 单选和多选 在ActionForm中必须有 private String singleSelect = Single ; public String getSingleSelect() { return (this singleSelect); } public void setSingleSelect(String singleSelect) { this singleSelect = singleSelect; } 或多选 多选必须是数组 private String[] beanCollectionSelect = { value value value }; public String[] getBeanCollectionSelect() { return (this beanCollectionSelect); } public void setBeanCollectionSelect(String beanCollectionSelect[]) { this beanCollectionSelect = beanCollectionSelect; } 第二 在Jsp中写入tang lib语句如下 <:select property= beanCollectionSelect size= multiple= true > <:optionsCollection name= testbean property= beanCollection /> </:select> 其中testbean是ActionForm的名称 以上是: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中 <:select property= selected > <:options name= testbean property= values labelProperty= label /> </:select> Struts标签库的使用还是需要小心 不必完全使用Struts的标签库 个人感觉Struts这种替代Html语句的标签库有一种牵强附会 给使用者掌握带来难度 使用者除熟悉外 还必须理解Struts的对应标签库用法 而且这种调试出错 问题也无法准确定位 总是抽象地告诉你 no bean 或no form lishixinzhi/Article/program/Java/ky/201311/28412 很赞哦! (1056)