struts2 ModelDriven枚举类型数据该怎么处理
举个例子某个action实现了ModelDriven<User>接口,
User类字段:
private String personName;
private int age;
private Sex sex; //枚举
枚举类
public enum IsCheck {
MALE("男",0),FEMALE("女",1),UNKNOWN("不知道",2);
// 成员变量
private String name;
private int index;
// 构造方法
private IsCheck(String name, int index) {
this.name = name;
this.index = index;
}
/**
*
* 功能描述:根据名字取得相应枚举值
* @param name 中文值
* @return 枚举值
*/
public static IsCheck getName(String name) {
for (IsCheck c : IsCheck.values()) {
if (c.getName() == name) {
return c;
}
}
return null;
}
/**
*
* 功能描述:根据序号取得相应枚举值
* @param index 序号
* @return 枚举值
*/
public static IsCheck getName(int index) {
for (IsCheck c : IsCheck.values()) {
if (c.getIndex() == index) {
return c;
}
}
return null;
}
// get set 方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
}
在前台<input name="sex" type="text"/>提交表单的后会报错,问题就是input标签name属性改怎么写,ModelDriven才能接受到枚举的数据。
[解决办法]
你的Sex枚举类里的
public static Sex getName(String name) {
for (Sex c : Sex.values()) {
if (c.getName().equals(name)) {//用equals做比较
return c;
}
}
return null;
}
竟然是这样那你在action中对Sex sex;生成的set方法可以这样做
public void setSex(String sex){
this.sex=Sex.getName(sex);//将传进来的字符串通过你的getName方法找到相应的Sex实例
}