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

Extjs3.0整合ssh时提交表单,总是执行failure函数,不知道为什么,请各位指教

2012-01-24 
Extjs3.0整合ssh时提交表单,总是执行failure函数,不知道为什么,请各位大虾指教!本人新手,学习extjs3.0,要

Extjs3.0整合ssh时提交表单,总是执行failure函数,不知道为什么,请各位大虾指教!
本人新手,学习extjs3.0,要把它整合到struts2.1+spring2.5+hibernate3.0的框架中去,想做个添加管理员的功能,可是每次都是调用failure函数还提示错误类型connect,相关代码如下,请各位解答!(本人已经测试过了,如是用jsp做表现层,能把数据写入到数据库而用extjs做表现层则不行)
struts.xml的配置文件如下(action的配置)

XML code
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"><struts><package name="json" namespace="/" extends="json-default"><action name="addUser" class="addUser" method="add"><result type="json"/></action></package></struts>    

addUser.action的代码如下:
Java code
package per.ssh.action.admin;import java.io.IOException;import com.opensymphony.xwork2.ActionSupport;import per.ssh.dao.Admin.Admin;import per.ssh.services.admin.adminInterface;public class adminAction extends ActionSupport{    private boolean success;    private String msg="";        /**     * @return the success     */    public boolean isSuccess() {        return success;    }    /**     * @param success the success to set     */    public void setSuccess(boolean success) {        this.success = success;    }    /**     * @return the msg     */    public String getMsg() {        return msg;    }    /**     * @param msg the msg to set     */    public void setMsg(String msg) {        this.msg = msg;    }    private User user;    public User getUser(){        return this.user;    }    public void setUser(User user){        this.user=user;    }    private adminInterface testService=null;    public void setTestService(adminInterface testService){        this.testService=testService;    }    public String add() throws IOException{        Admin admin=new Admin(user.getUserName(),user.getPassword(),Integer.parseInt(user.getUserLevel()));        try{            testService.insert(admin);            success=true;            msg="添加管理员成功!";        }        catch(Exception ex){            success=false;            msg="用户名或密码错误!";        }        System.out.println(user.getUserName()+user.getPassword()+user.getUserLevel());        return SUCCESS;    }}

extjs的代码如下:
JScript code
Ext.ns("per.extjs.userManager");Ext.apply(Ext.form.VTypes,{    confrimPwd:function(val,field){        if(field.initalPassword){            var pwd=Ext.getCmp(field.initalPassword);            return (val==pwd.getValue());        }        return true;    },    confrimPwdText:'两次密码输入不一致!'});per.extjs.userManager.userForm=function(){    var boxStore=new Ext.data.SimpleStore({        fields:['user','level'],        data:[['超级管理员','1'],['一般管理员','2']]    });    var userLevel=new Ext.form.ComboBox({        id:'userLevel',        name:'user.userLevel',        fieldLabel:'用户类别',        forceSelection:true,        triggerAction:'all',        editable:false,        labelWidth:100,        width:125,        store:boxStore,        displayField:'user',        valueField:'level',        mode:'local',        value:'1',        width:600    });    var userName=new Ext.form.TextField({        id:'userName',        name:'user.userName',        fieldLabel:'用&nbsp;户&nbsp;名',        allowBlank:false,        blankText:'用户名不能为空!',        msgTarget:'under',        width:600    });    var password=new Ext.form.TextField({        id:'password',        name:'user.password',        fieldLabel:'用户密码',        allowBlank:false,        blankText:'密码不能为空',        inputType:'password',        msgTarget:'under',        width:600    });    var confrimPassword=new Ext.form.TextField({        id:'cpwd',        name:'cpwd',        fieldLabel:'重复密码',        inputType:'password',        initalPassword:'password',        vtype:'confrimPwd',        allowBlank:false,        blankText:'重复密码不能为空',        msgTarget:'under',        width:600    });     per.extjs.userManager.userForm.superclass.constructor.call(this,{        id:'userForm',        title:'添加管理员',        frame:true,        autoHeight:true,        applyTo:'main',        labelAlign:'right',        buttonAlign:'center',        labelWidth:'100',        width:760,        collapsible:true,        animCollapse:true,        bodyStyle:'padding:5px;',        items:[        {            xtype:'fieldset',            title:'管理员信息',            autoHeight:true,            autoWidth:true,            items:[userLevel,userName,password,confrimPassword]        }        ],        buttons:[        {            text:'提交',            handler:submit        },{            text:'取消',            handler:reset        }        ]    });    function submit(){        Ext.getCmp('userForm').form.submit({            clientValidation:true,            //waitMsg:'正在提交数据,请稍等...',            //waitTitle:'提示',            url:'addUser.action',            method:'POST',            //params:{userLevel:userComboBox,userName:userName,password:userpassword},            success:function(form,action){                Ext.Msg.alert('提示',"添加管理员成功!");            },            failure:function(form,action){                Ext.Msg.alert('提示',action.failureType+":"+action.getUrl());            }        });    }    function reset(){        Ext.getCmp('userForm').form.reset();    }}Ext.extend(per.extjs.userManager.userForm,Ext.form.FormPanel,{}); 


 相应的jsp页面代码如下:
HTML code
<%@ page language='java' import='java.util.*' pageEncoding='GBK'%><!-- <%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%> --><!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'><html>  <head>    <base>    <link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/extjs/resources/css/ext-all.css" />        <script type="text/javascript" src="${pageContext.request.contextPath}/extjs/adapter/ext/ext-base.js"></script>    <script type="text/javascript" src="${pageContext.request.contextPath}/extjs/ext-all-debug.js"></script>    <script type="text/javascript" src="${pageContext.request.contextPath}/pages/common/common.js"></script>    <script type="text/javascript" src="${pageContext.request.contextPath}/pages/userManager/userManager.js"></script>    <title>My JSP "test.jsp" starting page</title>    <meta http-equiv="pragma" content="no-cache">    <meta http-equiv="cache-control" content="no-cache">    <meta http-equiv="expires" content="0">        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">    <meta http-equiv="description" content="This is my page">    <!--    <link rel="stylesheet" type="text/css" href="styles.css">    -->    <script type="text/javascript">       Ext.onReady(function(){          Ext.BLANK_IMAGE_URL="${pageContext.request.contextPath}/extjs/resources/images/default/s.gif",          Ext.QuickTips.init();          var top=new per.extjs.common.top();          var nav=new per.extjs.common.nav();          var foot=new per.extjs.common.foot();          var form=new per.extjs.userManager.userForm();      });    </script>  </head>  <body>  <table width="960" align="center">  <tr>  <td id="head" colspan="2"></td>  </tr>  <tr>  <td id="nav" width="200"></td>  <td id="main" style="vertical-align:top"></td>  </tr>  <tr>  <td id="foot" colspan="2"></td>  </tr>  </table>  </body></html>

页面效果如下图所示:

点击提交按钮则出现如下错误提示:

请各位大虾给予解答!

[解决办法]
估计是url:'addUser.action',这写的不对
[解决办法]
<action name="addUser" class="addUser" method="add">
我怎么感觉应该是
<action name="addUser" class="per.ssh.action.admin.adminAction" method="add"> 呢
[解决办法]
探讨

引用:
估计是url:'addUser.action',这写的不对

这个应该没问题,我在adminAction中加了System.out.println("该类正在调用"),点击提交按钮控制台是会出现“该类正中调用”的,说明还是请求到了"addUser.action",刚刚测试到的原因是利用User类来封装表单的值时,能获取到username的值却获……

热点排行