Struts

庆贺党的生日!

 

一、

  在Struts中<html:checkbox>和<html:mutlibox>都可以生成checkbox标签。<html:checkbox>
比较简单在此就不介绍了。与<html:checkbox>相比<html:mutlibox>更具体灵活性。
<html:mutlibox>有两种使用方式:
1.使用数组方式:

 在Form中定义一个要显示的标签的数组和一个值的数组并提供相应的get、set方法。
 private String[] values ;
 private String[] labels = { "标签1", "标签2", "标签3", "标签4", "标签5" };
 在JSP页面的中代码:
  <logic:iterate id="lab" name="multiboxForm" property="labels">
   <html:multibox property="values">
    <bean:write name="lab" />
   </html:multibox>
   <bean:write name='lab' />
   <br>
  </logic:iterate>
 values的值如果没有给定,页面加载的时候则不选中任何项,设定值后则会选中相应的项。

 
2.使用org.apache.struts.util.LabelValueBean方式:

 在Form中定义一个装载标签、标签对应值的集合和一个用户选定值的数组并提供相应的get、set方法。
 private String[] values ;
 private ArrayList labelCollection;
 定义一个组装标签和标签对应值的方法。此处使用了static方法,可根据实现情况使用非静态方法。
 public static ArrayList getValues(String fileName) throws Exception {
  //可通过.properties或数组的方式来组装数据,此处使用.properties方式来实现更具灵活性。
  Properties prop = new Properties();
  //如果使用非static方法此处为:prop.load(this.getClass().getResourceAsStream(fileName));
  prop.load(VO.class.getResourceAsStream(fileName));
  Enumeration enums = prop.propertyNames();
  String key = null;
  ArrayList list = new ArrayList();
  while (enums.hasMoreElements()) {
   key = (String) enums.nextElement();
   list.add(new LabelValueBean(prop.getProperty(key), key));
  }
  return list;
 }
 得到list后,可为form中的lableCollection属性赋值.setCamCollection(list)。
 在JSP页面的中代码:
  <logic:iterate id="lab" name="multiboxForm" property="labelCollection">
   <html:multibox property="values">
    <bean:write name="lab" property="value" />
   </html:multibox>
   <bean:write name="lab" property="label" />
   <br>
  </logic:iterate>
   

    values的值如果没有给定,页面加载的时候则不选中任何项,设定值后则会选中相应的项。 
 
    最后强调一点,就是在Form的reset方法中要将其复位,否者checkbox不能正常工作。如果是使用动态Form则必须在reset方法中调用initialize(mapping)方法。因为DynaActionForm类中reset方法是个空方法没有实现体,所以必须定义一个DynaActionForm类的子类来复写reset方法。

 

二、

<html:options>与<html:optionCollection>都是用来生成一组<html:option>的标签,后者比前者更具灵活性。
 
 <html:select name='FormName' property='propertyName'>
  <html:optionsCollection property='CollectionName'/>
 </html:select>
    此处CollectionName为装载了标签和值的集合。与<html:multibox>标签一样,要正确使用必须在reset方法中将CollectionName置空。

你可能感兴趣的:(apache,html,jsp,bean,struts)