今天尝试用struts时,发现这样一个问题。
前端ajax发送的请求总是报404。
以下是代码段,请各位看看问题出在哪里。
首先是Struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.i18n.encoding" value="UTF-8" />
<constant name="struts.devMode" value="true" />
<package name="user" extends="json-default">
<action name="login" class="com.action.UserAction" method="login">
<result type="json" />
</action>
</package>
</struts>
接下来是前台的js
/*登录方法*/
var login = function(){
$.ajax({
url:'login.action',
async:false,
dataType:'json',
data:{
},
success:function(data){
console.log(data);
}
});
};
错误信息:
404 There is no Action mapped for namespace / and action name login
显示的路径为
http://localhost:8081/family/login.action
求教问题究竟在哪里
问题已经找到!
本人手残了
把struts.xml写成了Struts.xml
多谢各位了
1,看你跳转前端页面的方法跟你登陆的方法在不在同一个action 下面2,看你tomcat 下项目的代码跟你eclipse 下的代码是否同步3,有可能你的struts、xml 写错了可以去查一下struts 官方文档怎么写
貌似是命名空间的问题吧,好久之前遇到过,忘了怎么处理了,不过报错提示应该是命名空间的问题,就是你package的name
js的url需要改一下,改成user/login.action试一下
因为你的配置文件里写的package name=“user”
而url写的是login.action所以struts2会去/目录下找
所以找不到。
马勒戈壁的,我手残了。
问题解决了!
把struts.xml 写成了Struts.xml了
看来大小写字符是不承认的