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 code
function 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<rows.length; 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<String, String> addRole(@RequestBody Role role){ Map<String, String> result = new HashMap<String, String>(); try { List<Role> rs = testGetRoles(); //List<Role> 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 code
var type = ''; if(roleType == 1) type = 'ROLE'; else if(roleType == 2) type = 'GROUP';