当前位置: 代码迷 >> J2EE >> spring接收从页面传回的enum有关问题
  详细解决方案

spring接收从页面传回的enum有关问题

热度:86   发布时间:2016-04-22 01:51:45.0
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 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';
  相关解决方案