struts2 ModelDriven枚举类型数据该怎么处理

jeason_boen 2013-01-22 11:43:46
举个例子某个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才能接受到枚举的数据。
...全文
73 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
suciver 2013-01-22
  • 打赏
  • 举报
回复
你的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实例 }
jeason_boen 2013-01-22
  • 打赏
  • 举报
回复
引用 3 楼 sun1234567start 的回复:
引用 2 楼 suciver 的回复:你action中的枚举不是Sex类吗怎么提供的枚举类又是IsCheck了? 哦,是复制粘贴的手误

public enum Sex {  
	MALE("男",0),ALLOW("女",1),UNKNOWN("不知道",2);  
        // 成员变量  
        private String name;  
        private int index;  
        // 构造方法  
        private Sex(String name, int index) {  
            this.name = name;  
            this.index = index;  
        }
        /**
         * 
         * 功能描述:根据名字取得相应枚举值
         * @param name 中文值
         * @return 枚举值
         */
        public static Sex getName(String name) {  
            for (Sex c : Sex.values()) {  
                if (c.getName() == name) {  
                    return c;  
                }  
            }  
            return null;  
        }
        /**
         * 
         * 功能描述:根据序号取得相应枚举值
         * @param index 序号
         * @return 枚举值
         */
        public static Sex getName(int index) {  
            for (Sex c : Sex.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;  
        }  
    }  

jeason_boen 2013-01-22
  • 打赏
  • 举报
回复
引用 2 楼 suciver 的回复:
你action中的枚举不是Sex类吗怎么提供的枚举类又是IsCheck了?
哦,是复制粘贴的手误
suciver 2013-01-22
  • 打赏
  • 举报
回复
你action中的枚举不是Sex类吗怎么提供的枚举类又是IsCheck了?
jeason_boen 2013-01-22
  • 打赏
  • 举报
回复
求解!

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧