首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

springmvc Json Jquery easyui 传值有关问题

2012-12-14 
springmvc Json Jquery easyui 传值问题本帖最后由 xun_2008 于 2011-11-28 23:29:34 编辑modelUser.java@

springmvc Json Jquery easyui 传值问题
本帖最后由 xun_2008 于 2011-11-28 23:29:34 编辑 model
User.java


@Entity
@Table(name="tbl_users")
public class User {
    private int id;
    private String userName;
    private String password;
    private Date birthday;
    private Date inDate;
    private int age;
    private Department department;
    private Date testDate;

    @Id 
    @Column(name="user_id")
    @GeneratedValue(strategy=GenerationType.AUTO)
    public int getId() {
        return id;
    }
    //还有其他的get、set方法


UserController.java

@RequestMapping(value="/addOrUpdate")  
    @ResponseBody
    public Map<String, String> addOrUpdate(User user){
        Map<String, String> result = new HashMap<String, String>();   
        //User user = null;
        //request.getParameter("newUser");
        try{
            userService.save(user);
            result.put("message", "操作成功!");
        } catch (Exception ex){
            ex.printStackTrace();
            logger.error(ex.getMessage());
            result.put("message", "操作失败!");
        }
        return result;
    }


addUser.jsp

function addOrUpdateUser(){
            var r = $('#userForm').form('validate');
            
            if(!r) {
                return false;
            }
            var id = $("input[name='id']").val();
            var name = $("input[name='name']").val();
            var password = $("input[name='password']").val();
            var age = $("input[name='age']").val();
            var birthday = $("input[name='birthday']").val();
            var deptId = $("input[name='deptId']").val();
var jsonUser = {"id":id, "name":name, "password":password,"age":age,


 "birthday":birthday, "Department.id":deptId};
var strUser = JSON.stringify(jsonUser);

alert(strUser);
            $.post("user/addOrUpdate",strUser,function(data){
            $('#win').window('close');  // close window  
                $('#userTable').datagrid('reload');  
                $.messager.alert('提示',data.message,'info');
            },'json');
        }

<form id="userForm" method="post" style="margin: 10;">
    <input type="hidden" name="id" id="uuid">
        名字:<input name="name" style="width: 200" validType="length[3,30]" class="easyui-validatebox" required="true"> <br>
        密码:<input name="password" style="width: 200" type="password"  validType="length[3,30]" class="easyui-validatebox" required="true"> <br>
        年龄:<input class="easyui-numberspinner" name="age" min="1" max="120" increment="1" style="width:200px;"></input><br>
        生日:<input name="birthday" style="width: 200" class="easyui-datebox" required="true"><br>
        部门:<input id="addDeptId" name="deptId" style="width: 200"/><br>       
        <a href="#" id="btn-back" onclick="closeWindow();" class="easyui-linkbutton" iconCls="icon-back">返回</a>
        <a href="#" id="btn-add" onclick="addOrUpdateUser();" class="easyui-linkbutton" iconCls="icon-save">保存</a>
    </form>


---------------------------------------------------
问题:当点击保存,先弹出alert的信息:{"id":"","name":"asas","password":"aaaa","age":"12","birthday":"2011-11-2","Department.id":"2"}
但到Controller那里,用addOrUpdate(User user)接收,User的每个属性值都是null或0,请问应该怎么接收界面传到后台的Json?
还有小弟正在学spring的mvc,各位有哪些好书推荐的没?
thanks a million in advanced.

[解决办法]
我还尝试过用$.ajax()代替$.post(),其结果还是一样,所以属性都是null或0,除了自动递增的id

//             $.post("user/addOrUpdate",strUser,function(data){
//             $('#win').window('close');  // close window  
//                 $('#userTable').datagrid('reload');  
//                 $.messager.alert('提示',data.message,'info');
//             },'json');
            
            $.ajax({
        type:'post',


        url: 'user/addOrUpdate',
        contentType : 'application/json',
        dataType:'json',
        data : strUser,  
        success:function(data){
        $('#win').window('close');  // close window  
                $('#userTable').datagrid('reload');  
                $.messager.alert('提示',data.message,'info');
        }
        });


----------------------------
难道真的没人遇到过类似问题???
[解决办法]
 addOrUpdate(User user){的改成addOrUpdate(@ModelAttribute User user)试试
[解决办法]
data:这个项的格式应该为键值对的格式 aaa="{}";后台再通过aaa接收,然后再解析json字符串
[解决办法]
改了好几个地方,也做了很多次测试,终于搞定了,貌似是由JSP文件中的JS代码:var strUser = JSON.stringify(jsonUser);引起,直接将jsonUser用json格式传就能接收了
还有在spring的配置文件添加

<beans:bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">  
        <beans:property name="cacheSeconds" value="0" />  
        <beans:property name="webBindingInitializer">  
            <beans:bean class="hunter.maven.springmvc_demo.util.MyWebBinding" />  
        </beans:property>  
         <!-- 配置一下对json数据的转换    -->
        <beans:property name="messageConverters">  
            <beans:list>  
                <beans:bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></beans:bean>  
            </beans:list>  
        </beans:property>
   </beans:bean>

[解决办法]
感谢分享!
我用flex客户端,请求的时候没有加设置httpServer请求的contentType="application/json"一直进入不了方法,找了半天才看到这个对我有用的帖子!
再次感谢

热点排行