我在struts.xml文件中定义了两个包,二者的命名空间分别是"/king"和"/blank",
同时,在JSP中,用EXTJS构造了一个formPanel,其url设置成:url:"blank/blankAction.action"。
在提交的时候发生如下问题:There is no Action mapped for namespace /king and action name blankAction. - [unknown location]。
但当我用IE直接去访问那个URL(http://localhost:8080/DHME2/blank/blankAction.action)时,
却可以正常访问并得到一个JSON的数据。这表明我的Action类并没有问题。
看起来在提交的时候,提交url由“blank/blankAction.action”被改成了“king/blankAction.action”。
我不知道这是在EXTJS提交的时候改的还是struts2框架在做处理的时候改的。哪位高人能指教一下?谢谢了。
[b]配置文件代码如下:[/b][i][/i]
<!-- 注册action -->
<action name="resister" class="ResisterAction">
<result name="success" type="tiles">resisterOK</result>
<result name="input" type="tiles">reResister</result>
<!-- 加入自定义的拦截器将覆盖默认的拦截器栈,所以要显性加入默认的defaultStack(如下句)。 -->
<interceptor-ref name="logger" />
<interceptor-ref name="defaultStack" />
</action>
<!-- extjs的ajax测试用Action -->
<package name="blankPackage" namespace="/blank" extends="json-default">
<action name="blankAction" class="BlankAction" method="execute">
<result type="json"/>
<!-- 加入自定义的拦截器将覆盖默认的拦截器栈,所以要显性加入默认的defaultStack(如下句)。 -->
<interceptor-ref name="logger" />
<interceptor-ref name="defaultStack"/>
</action>
</package>
[b]jsp的代码:[/b][i][/i]
// form contain tabs
var tab2 = new Ext.FormPanel({
//labelAlign: 'top',
title: '新用户信息',
id:"resisterForm",
bodyStyle:'padding:5px',
//autoScroll:true,
width: 555,
items: [
{
xtype:'tabpanel',
plain:true,//tab页的背景色。设为true时无背景,为false时有背景
activeTab:0,
height:510,//此长度决定纵向是否出现滚动条
defaults:{bodyStyle:'padding:10px'},
items:[{
title:'个人基本信息',
layout:'form',
autoScroll:true,
defaults: {width: 500},//不能大于form的宽度,否则水平方向会出滚动条
defaultType: 'textfield',
items: [
{
xtype:"fieldset",
title:"自然信息",
defaults:{xtype:"textfield",width:180},
items:[
{
fieldLabel: '姓名',
name: 'user.username',
allowBlank:false
},{
fieldLabel: '性别',
xtype:'radiogroup',
name:'user.sex',
width:180,
items: [
{boxLabel: '男人', name: 'user.sex', inputValue: 1, checked: true},
{boxLabel: '女人', name: 'user.sex', inputValue: 2},
{boxLabel: '女博士', name: 'user.sex', inputValue: 3}
]
},{
fieldLabel: '生日',
name: 'user.birthday',
format:'Y-m-d',//2009-01-02.格式说明要参考Date的API文档
xtype:'datefield'
}
]
}
]
}
]
}
],// form的主体部分结束
buttons: [{//form的按钮部分
text: '保存',
handler:this.save,
scope:this
},{
text: '重置'
},{
text: '取消'
}
]
// form的按钮部分结束
});
[b]// 提交的处理方法的代码:[/b][i][/i]
function save(){
Ext.getCmp("resisterForm").getForm().submit({
waitTitle:"等等啊",
waitMsg:'正在保存...',
// ajax way
url:"[b]blank/blankAction.action[/b][i][/i]",
method:'POST',
success:function(){
Ext.MessageBox.alert("save ok");
},
failure:function(){
Ext.MessageBox.alert("同志,出错了","出错了哈哈");
},
scope:this
});
}