从错误提示看,原因是因为随便写的路径与统配的action匹配了,把这个name写两个下划线就不匹配了,所以才进的404。我搞不明白的是为什么aaa会和*_*匹配?
所以在一些评论里面说是通配符的问题,我认为不是根本原因
阅读这篇文章:
http://blog.csdn.net/wengengeng/article/details/53673936
少了一个method="{1}"吧
o;uo
你在action里面没有除了返回SUCCESS之外,没有其他逻辑是返回类似ERROR,INPUT之类的字符串吧。或者是struts.xml里面没有配好。你把代码贴出来看看先。
最好不要用默认吧,定义一个自己可以识别的可能会更好一点
好像过去很久了不知道你解决了问题没有。。通配符要配合{1}{2}这种使用,*号代表URL传进来的参数..{1}代表代替的代码段...
以你这样的形式会出现500错误,但是写成xxx.action就会出现404错误,前提是配置时只有一个通配符,如name="Hello_*",然后添加默认就可以了,具体原因我也不知道
你看你的action标签里 的class 属性 是不是这么写的 "com.imooc.{3}.{1}Action" 对吧, 然后 你的 HelloWorld_add_action 就是匹配 *_*_* 这个正则对吧, 所以 *_*_* = {1}_{2}_{3} 所以 {1} =HelloWorld, {2}=add ,{3}=action 最后 你的class 被翻译成 com.imooc.action.HelloWorldAction
若通配符为*_* 则通配符与默认action冲突
把通配符改了就好了 例如加两个下划线*__*
你上边代码的struts标签根本都没有闭合。。。
<package name="default" namespace="/" extends="struts-default">
<default-action-ref name="index"></default-action-ref>
<action name="index">
<result>/error.jsp</result>
</action>
<struts>
上边的<package>标签前面应该有<struts>标签,最后应该有</struts>标签
请求不到资源吧?看看,配置信息是不是都对
同问,我把action放在两个不同的package中问题就解决了。但是为什么放在同一个package中的时候默认的就没有用了
需要把最后那个通配符的也改成和老师的一样,因为两种的写法是一样的,错误的action写法和通配符访问的action写法,xml无法判断是哪个,但是优先是去动态方法调用的,所以它会报错。
不过默认的action访问,要是namespace空间访问错误,直接会报错,无法跳转的。
兄弟,这个怎么处理的。还记得吗?
可以将一系列的错误方式进行统一,然后跳转到错误页面
如果使用通配符,若想跳转错误页面,则在输入域名时不能按照“*_*”来写。
与通配符冲突,你把下面的通配符的部分注释掉再试试,应该就可以了。我是这样的。
只有跟本工程相关 例如当你namespace:/aaa 时,当前面地址为 http://localhost:8080/HelloWorld/aaa/ 后缀为.action 中间输入action地址错误时才会跳转到默认错误界面 例如http://localhost:8080/HelloWorld/aaa/sxsx.action 一点小白的个人见解 。0.0 。
不是ab.action,用a_b.action 试下,你的配置文件里是*_*,必须有_下划线,否则找不到对应action
您好,index这个Action我没看到,我猜应该你在这个indexAction声明了什么属性。如果是默认Action,Action对象实例在ActionContext对象实例之前创建的,所有这样取得ActionContext容器对象就有可能会返回null,你可以检查一下,也可以贴出来具体的Action代码。
您好,还请详细描述问题,以便解析。
您好,您没有指定Action的class属性。