博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Struts2.3动态调用报 No result defined for action 错误
阅读量:5364 次
发布时间:2019-06-15

本文共 2290 字,大约阅读时间需要 7 分钟。

struts 2.3.16  採用动态调用发现不工作报404 not found,网上查找原因:

1.由于:struts2中默认不同意使用DMI

所以:须要在配置文件里打开: <constant name="struts.enable.DynamicMethodInvocation" value="true"/>

改动发现报No result defined for action 

2.错误信息来看,是说未定义result。

你有没有配置拦截器<interceptor-ref name="validation"/>?

假设有的话,去掉全部的拦截器。

包含这个缺省的拦截器栈:<default-interceptor-ref name="defaultStack"/>

struts调用action的3种方式:(引至互联网)

动态方法调用在Struts2中动态方法调用有三种方式,动态方法调用就是为了解决一个Action相应多个请求的处理,以免Action太多第一种方式:指定method属性这样的方式我们前面已经用到过,相似以下的配置就能够实现
redirect
/WEB-INF/JspPage/chapter2/plaintext.jsp
另外一种方式:感叹号方式(须要开启),官网不推荐使用这样的方式,建议大家不要使用.用这样的方式须要先开启一个开关
将此常量设置为true,这样的方式才干使用,使用见演示样例Actionpackage chapter3.action;public class Chapter3Action {public String result1(){ return "result1";}public String result2(){ return "result2";}} Jsp中訪问方式 result1
result2
假设配置了后缀,必须这样写:/chapter4/chapter4Action!create.actionXML中配置方式
/WEB-INF/JspPage/chapter3/result1.jsp
/WEB-INF/JspPage/chapter3/result2.jsp
/WEB-INF/JspPage/chapter3/chapter3.jsp
第三种方式:通配符方式(官网推荐使用)首先得关闭开关
这一种方式是由第一种转变过来的,我们能够看到,第一种方式有非常多反复的代码,那么我们能够进行变形,看以下的代码
/…/test.jsp
chapter3_*这里的*就是你呆会要匹配的字符串,即你在后面的请求中得这样写http://...../ chapter3_create 或 http://...../ chapter3_update注意,这时你action中必须有create和update方法与之匹配,甚至还能够这样匹配
/…/{1}.jsp
可是这时一定要有相应的JSP页面存在,而且相应的路径不能错,这就对我们的命名进行了强制性的规定,一定要规范.课堂演示样例:Actionpublic class Chapter4Action extends ActionSupport {public String list(){ return "list";}public String create(){ return "create";}public String index(){ return "index";}} XML:
/WEB-INF/JspPage/chapter4/chapter4_{1}.jsp
关于通配符匹配的优先权:
(1)假设struts.xml里面有相应的action name ,就算它有其它通配符匹配的,都优先相应全然同样的。
比方 有一个 action name 是 "user_add"  另一个是 "user_*"。

如今,有一个请求是 "user_add.action "。那么。它会优先匹配"user_add " 。

(2)假设一个action name相应于两个带通配符的action name 那么。须要看这个配置谁在前面,它匹配写在前面的
比方 有一个 action name 是 "*_*"  另一个是 "user_*" 。如今。有一个请求是 "user_add.action ",.那么它会优先匹配写在前面的那个action
(3)不论什么带"*"的action name 优先权都是一样的。不是说带一个"*"的优先权就比带两个"*" 的高.
总结:因此我们应该把具有含有最多通配符的Acton配置放在最后,否则Struts2一一匹配全部的Action,这会减少程序的效率。

转载于:https://www.cnblogs.com/yfceshi/p/7137748.html

你可能感兴趣的文章
WiCloud 商业Wi-Fi管理平台
查看>>
团队项目--未完待续
查看>>
双重标准,我该怎么解决
查看>>
python中的网页标签等字符处理
查看>>
Linux常用命令(十二)
查看>>
Linux常用命令(十五)
查看>>
Linux常用命令(十四)
查看>>
Linux常用命令(十七)
查看>>
Linux常用命令(十六)
查看>>
Linux常用命令(二十四)
查看>>
4种java定时器
查看>>
Vue.js 教程
查看>>
linux 设置网卡
查看>>
Ajax:js读取txt内容(json格式内容)
查看>>
组合数据类型练习,英文词频统计实例上
查看>>
Uber回馈开源的一些软件
查看>>
day 3 修改haproxy.cfg 作业
查看>>
UIScrollView —— 缩放实现案例(二)
查看>>
【Qt】Qt Linguist介绍【转】
查看>>
sim usim Uim 区别
查看>>