日期:2014-05-16 浏览次数:20381 次
2009-09-12 10:51:27 |??分类: 默认分类 |??标签: 无 | 字号 ? 订阅
??????? web开发过程中,经常需要使用Ajax进行数据的交互。ExtJs表单提交默认使用异步的方式,若使用Struts2的Action进行数据的处理,则需要返回一个Json数据客户端才会收到服务器的处理结果,我们使用jsonplugin插件从Action中返回结果给用户,下面我们就来实现这一方法:
?1、下载jsonplugin插件,网址是:http://code.google.com/p/jsonplugin/
?2、将下载的jar文件拷贝到你的web工程下的lib文件夹中。
?3、客户端js提交动作部分代码:
if (win.getComponent('loginForm').form.isValid()) { //'loginForm'为表单id
????????win.getComponent('loginForm').form.submit({
???????????url : './userLogin.action',
???????????waitTitle : '正在登陆',
???????????method : 'POST',
???????????waitMsg : '服务器正在验证,请稍候......',
???????????success : function(form, action) {
????????????
????????????if (action.result.success) {
?????????????// 登录成功,页面跳转
?????????????window.location = "./main.jsp"
????????????}
???????????},
???????????failure : function(form, action) {
????????????Ext.MessageBox.alert("登录失败",
??????????????action.result.message);
???????????}
??????????});
???????}
?4、编写action,以用户登录为例
???? public class ActionTest extends ActionSupport {
???????????? private boolean success;
???????????? private String message;
???????????? private User user; //模型对象
???????????? public String execute() throws Exception {
???????????????? User useReg = vlidate(user);//验证用户是否存在
????????????????? if(useReg !=null){
?????????????????????this.success = true;
?????????? ??????? ? this.message = "测试通过";
????????????????? }else{
????????????????????? this.success = false;
?????????? ????????? ?this.message = "对不起,未授权用户不能使用该系统!";
????????????????? }
??????????????????? return SUCCESS;
?????????????}
??????? //下面省略get和set方法
??? }
提交成功返回数据位:{"success":true,"message":"测试通过"}
提交失败返回数据位:{"success":false,"message":"对不起,未授权用户不能使用该系统!"}
注意:action中必须最后返回SUCCESS 才能返回该Json数据,若设置其它返回结果则客户端一直是提交状态。
?5、在struts.xml文件中配置action
<action name="actionTest" class="com.action.actionTest"><!--class属性为action完整路径-->
???<result name="success">/login.jsp</result><!--必须配置success,否则会出错-->
???<result type="json" />
??</action>
6、测试,登录不成功界面
登录成功会自动转到你希望跳转的页面,需要说明的是,不管你在?<result name="success">/login.jsp</result>配置什么值,Struts2都不会根据你的设置进行跳转,这是 因为我们使用了Ajax提交表单数据,所以页面的跳转还需要使用:window.location = "./main.jsp" 进行。