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"一直进入不了方法,找了半天才看到这个对我有用的帖子!
再次感谢