spring接收从页面传回的enum问题
model
Java code@Entity
@Table(name = "tbl_role_header")
public class Role {
private String id;
private String code;
private String name;
private RoleType roleType;
//getter setter
}
public enum RoleType {
/**
* 1.role.
*/
ROLE(1),
/**
* 2.group.
*/
GROUP(2);
private int roleType;
private RoleType(int roleType){
this.setRoleType(roleType);
}
public int getRoleType() {
return roleType;
}
public void setRoleType(int roleType) {
this.roleType = roleType;
}
}
JS页面文件
JScript codefunction saveRole() {
var roleNo = $('#roleNo').val();
var roleType = $('#roleType').val(); //roleType的值为1或2
var roleName = $('#roleName').val();
var roleActive = $('#roleActive').val();
if(roleNo == null || roleName == null) {
$.messager.alert('提示','角色代號和角色名稱不能為空!','info');
return;
}
var active = 0;
if(roleActive == 'on') {
active = 1;
}
var roleDesc = $('#roleDesc').val();
var rows = $('#tblRoles').datagrid('getRows');
var roleMembers = new Array();
for(var i=0; i
var employee = {'employeeId':rows[i].empNo,
'name':rows[i].empName};
var member = {'member':employee,'remark':rows[i].remark};
roleMembers.push(member);
}
var data = {'code':roleNo,'roleType':roleType,'name':roleName, 'active':active,'remark':roleDesc,'roleMembers':roleMembers};
$.ajax({
type:'post',
url:'save_role',
data:JSON.stringify(data),
contentType: "application/json",
success:function(data){
$.messager.alert('提示',data.message,'info');
window.location.href= "list";
},
error:function(data){
$.messager.alert('提示',data.responseText,'info');
}
});
}
controller
Java code@RequestMapping(value="/save_role", method=RequestMethod.POST)
@ResponseBody
public Map addRole(@RequestBody Role role){
Map result = new HashMap();
try {
List rs = testGetRoles();
//List rs = roleService.getAll(Role.class);
for(Role r : rs) {
if(r.getCode().equals(role.getCode())) {
result.put("message", "已存在同樣的角色代號,不可重覆新增!");
return result;
}
}
roleService.save(role);
result.put("message", "操作成功!");
} catch (Exception ex){
ex.printStackTrace();
result.put("message", "操作失败!");
}
return result;
}
-------------------------------------
报错如下:
2012-03-29 09:52:02.102:WARN::/bpm.web/roles/save_role: org.codehaus.jackson.map.JsonMappingException: Can not construct instance of bpm.core.model.org.RoleType from String value '2': value not one of declared Enum instance names| at [Source: org.mortbay.jetty.HttpParser$Input@c8b9ac; line: 1, column: 14] (through reference chain: bpm.core.model.org.Role["roleType"])
问题描述:
一个对象包含一个enum对象,如何将该对象从页面传回controller
不知你们遇到类似的问题没?
------解决方案--------------------
多謝了,這樣就OK了
JScript codevar type = '';
if(roleType == 1)
type = 'ROLE';
else if(roleType == 2)
type = 'GROUP';