枚举类在Struts2中的运用
import java.util.LinkedHashMap;import java.util.Map;public enum SettlementCycle implements ConstantSupport{Buyout{ public String cnName(){ return "买断"; } },BillCycle{ public String cnName(){ return "单结"; } },WeekCycle{ public String cnName(){ return "每周"; } },MonthCycle{ public String cnName(){ return "每月"; } },QuarterCycle{ public String cnName(){ return "每季"; } },SemiannualCycle{ public String cnName(){ return "每半年"; } },YearCycle{ public String cnName(){ return "每年"; };//年桔 }; private static final Map<Integer,String> ordinalMap; private static final Map<String,String> stringMap; static{ ordinalMap = new LinkedHashMap<Integer,String>(); for(SettlementCycle cycle:SettlementCycle.values()){ ordinalMap.put(cycle.ordinal(),cycle.cnName()); } stringMap = new LinkedHashMap<String,String>(); for(SettlementCycle cycle:SettlementCycle.values()){ stringMap.put(cycle.name(),cycle.cnName()); } } public static Map ordinalMap(){ return ordinalMap; } public static Map stringMap(){ return stringMap; } public static String cnName(int i){ return SettlementCycle.values()[i].cnName(); }}
?
import ognl.DefaultTypeConverter;import java.util.Map;public class EnumerationConverter extends DefaultTypeConverter { @Override public Object convertValue(Map context, Object value, Class toType) { if (toType.isEnum()) { if (value == null)return null; if (value instanceof String[]) { String[] ss = (String[]) value; if (ss.length == 1) { return Enum.valueOf(toType, ss[0]); } else { Object[] oo = new Object[ss.length]; for (int i = 0; i < ss.length; i++) { oo[i] = Enum.valueOf(toType, ss[i]); } return oo; } } } return super.convertValue(context, value, toType); }}
<constant name="struts.ognl.allowStaticMethodAccess" value="true" />
<@s.select list="@xx.SettlementCycle@ordinalMap()" name="contract.cycle" /><@s.radio list="@xx.SettlementCycle@ordinalMap()" name="contract.cycle" /><@s.checkboxlist list="@xx.SettlementCycle@ordinalMap()" name="contract.cycle" />?在 freemaker显示枚举的中文名
<@s.property value=” @xx.SettlementCycle@cnName(name)”/>
其中第二部的enum转化器是从网络上获取的
如果更好的建议,欢迎拍砖:)