EXT4提交表单到struts2返回json数据并跳转页面
2014-10-11 09:31
555 查看
新手学习ext,提交表单的时候总是不能返回正确的json数据,在网上找了相关资料终于发现了问题,记录下以供大家参考
这里说明下,我用的是ext的form提交,要求必须返回json格式的数据
下面是action代码
把要返回的状态数据放到map里面并生成get set方法,这里struts2会自动把以get开头的方法序列化成json数据,不需要的就在前面加上注解@JSON(serialize=false),表示不会转成json,在struts.xml做如下配置
这里name="root"表示从根节点开始, 要返回的json数据在dataMap中
这里说明下,我用的是ext的form提交,要求必须返回json格式的数据
Ext.require([ 'Ext.form.*', 'Ext.layout.container.Absolute', 'Ext.window.Window' ]); Ext.onReady(function() { Ext.QuickTips.init(); Ext.form.Field.prototype.msgTarget = 'side'; var form = new Ext.form.Panel({ layout: 'absolute', defaultType: 'textfield', border: false, url: basePath + 'user!login.action', items: [{ fieldLabel: '用户名', name: 'user.name', allowBlank : 'false', x: 80, y: 60 },{ fieldLabel: '密码', name: 'user.password', allowBlank : 'false', x: 80, y: 100 }] }); new Ext.window.Window({ autoShow: true, title: '用户登录', width: 500, height:300, minWidth: 300, minHeight: 200, layout: 'fit', plain: true, closable : false, dragglable : false, items: form, buttons: [{ text: '注册' },{ text: '登录', handler : function(){ form.submit({ success: function(form, action) { if(action.result.success){ location.href = basePath + 'app/main.jsp'; } }, failure: function(form, action) { if(action.result.success == false){ Ext.Msg.alert("Failed","登录失败!") } }); } }] }); });
下面是action代码
public class UserAction extends ActionSupport { private User user; private UserService userService; private Map<String,Object> dataMap; public String login() throws Exception{ dataMap = new HashMap<String, Object>(); if(userService.queryUserInfo(user)){ dataMap.put("success", true); return "main"; }else{ dataMap.put("success", false); return "index"; } } @JSON(serialize=false) public User getUser() { return user; } public void setUser(User user) { this.user = user; } @JSON(serialize=false) public UserService getUserService() { return userService; } public void setUserService(UserService userService) { this.userService = userService; } public Map<String, Object> getDataMap() { return dataMap; } public void setDataMap(Map<String, Object> dataMap) { this.dataMap = dataMap; } }
把要返回的状态数据放到map里面并生成get set方法,这里struts2会自动把以get开头的方法序列化成json数据,不需要的就在前面加上注解@JSON(serialize=false),表示不会转成json,在struts.xml做如下配置
<struts> <package name="json" extends="struts-default,json-default"> <action name="user" class="userAction"> <result name="main" type="json"> <param name="root">dataMap</param> </result> <result name="index" type="json"> <param name="root">dataMap</param> </result> </action> </package> </struts>
这里name="root"表示从根节点开始, 要返回的json数据在dataMap中
相关文章推荐
- struts2 + ajax(由前台的form提交数据到后台,再根据form所调用返回获取的后台json格式的数据返回到前端,然后前端用jquery对json数据进行解析)==》》涉及非文件上传的部分
- jquery序列化form表单使用ajax提交后处理返回的json数据
- Struts2(二)---将页面表单中的数据提交给Action
- easyui使用Ajax提交表单,返回Json数据
- struts2中form只提交数据不跳转引发的刷新后重复提交表单中数据的问题
- form表单只提交数据而不进行页面跳转的解决方案
- extjs 中formPanel提交到action后返回json数据到ext中,但是ext页面不进入sucess也不进入failure
- Struts2(二)---将页面表单中的数据提交给Action
- jquery.validate验证表单,自己的js提交数据,返回json
- form表单只提交数据而不进行页面跳转的解决方案
- easyui使用Ajax提交表单,返回Json数据
- easyui使用Ajax提交表单,返回Json数据
- Atitit.列表页面and条件查询的实现最佳实践(1)------设置查询条件and提交查询and返回json数据
- jquery序列化form表单使用ajax提交后处理返回的json数据
- struts2 表单提交后,返回原页面,保存表单radio 等标签的值
- jquery序列化form表单使用ajax提交后处理返回的json数据
- Atitit.列表页面and条件查询的实现最佳实践(1)------设置查询条件and提交查询and返回json数据
- form表单只提交数据,而不进行页面跳转
- JavaScript Post提交数据并跳转到页面(模拟Form表单提交)
- jsp页面的ajax和form表单提交后接收数据的区别(SpringMVC控制器返回Map对象)