select下拉選項的value值我們通常會使用一些數字或者英文縮寫便於存入資料庫中,例如:
<option value="1">男</option>
<option value="0">女</option>
這樣在資料庫裡存為1的記錄代表是男,而0代表是女,在java類檔案裡,我們一般會定義為常量放在一個專門的類檔案中:
public static String SEX_MAN = "1";
public static String SEX_WOMAN = "0";
但這樣我們更改這些常量只局限於java檔案中,頁面上得不到更新,所以我們可以採用java的枚舉類來解決這個問題,在定義常量的java檔案中可以寫:
public static enum SEX ...{
男("男","1"),
女("女","0");
private final String value;
private final String label;
private SEX(String label,String value)...{
this.value=value;
this.label=label;
}
public String getValue()
...{
return value;
}
public String getLabel()
...{
return label;
}
}
在actionForm中定義一個Collection:
private Collection<LabelValueBean> sexList = new ArrayList<LabelValueBean>();
然後在action或者業務類裡寫:
for (SEX s : CommonDefine.SEX.values())
...{
list.add(new LabelValueBean(s.getLabel(), s.getValue()));
}
form.setSexList(list);
在頁面上寫:
<html:select name="userForm" property="user.sex" >
<html:optionsCollection name="userForm" property="sexList" />
</html:select>
這樣以後在擴充或者修改這個下拉式清單的時候,我們只需要修改枚舉類而不用動其他任何地方。這是一個最簡單的例子,遇到一些複雜繁多的下拉式清單,採用這種方法顯得十分清爽而且便於維護:)