Struts2.3动态调用报 No result defined for action 错误
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属性
这样的方式我们前面已经用到过,相似以下的配置就能够实现
<action name="chainAction" class="chapter2.action.Chapter2Action"
method="chainAction">
<result name="chainAction" type="chain">redirect</result>
</action>
<action name="plainText" class="chapter2.action.Chapter2Action"
method="plainText">
<result name="plainText" type="plainText">/WEB-INF/JspPage/chapter2/plaintext.jsp</result>
</action> 另外一种方式:感叹号方式(须要开启),官网不推荐使用这样的方式,建议大家不要使用.
用这样的方式须要先开启一个开关
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
将此常量设置为true,这样的方式才干使用,使用见演示样例
Action
package chapter3.action; public class Chapter3Action {
public String result1(){
return "result1";
} public String result2(){
return "result2";
}
} Jsp中訪问方式
<body>
<a href="${basePath}/chapter3/chapter3Action!result1">result1</a><br>
<a href="${basePath}/chapter3/chapter3Action!result2">result2</a><br>
</body>
假设配置了后缀,必须这样写:
/chapter4/chapter4Action!create.action
XML中配置方式
<package name="chapter3" namespace="/chapter3" extends="struts-default">
<action name="chapter3Action" class="chapter3.action.Chapter3Action">
<result name="result1">/WEB-INF/JspPage/chapter3/result1.jsp</result>
<result name="result2">/WEB-INF/JspPage/chapter3/result2.jsp</result>
<result name="chapter3">/WEB-INF/JspPage/chapter3/chapter3.jsp</result>
</action>
</package> 第三种方式:通配符方式(官网推荐使用)
首先得关闭开关
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
这一种方式是由第一种转变过来的,我们能够看到,第一种方式有非常多反复的代码,那么我们能够进行变形,看以下的代码
<action name="chapter3_*" class="chapter3.action.Chapter3Action"
method="{1}">
<result name="test">/…/test.jsp</result>
</action>
chapter3_*这里的*就是你呆会要匹配的字符串,即你在后面的请求中得这样写
http://...../ chapter3_create 或 http://...../ chapter3_update
注意,这时你action中必须有create和update方法与之匹配,甚至还能够这样匹配
<action name="chapter3_*" class="chapter3.action.Chapter3Action"
method="{1}">
<result name="test">/…/{1}.jsp</result>
</action>
可是这时一定要有相应的JSP页面存在,而且相应的路径不能错,这就对我们的命名进行了强制性的规定,一定要规范. 课堂演示样例:
Action
public class Chapter4Action extends ActionSupport {
public String list(){
return "list";
} public String create(){
return "create";
} public String index(){
return "index";
}
}
XML:
<action name="chapter4_*" class="chapter4.action.Chapter4Action" method="{1}">
<result name="{1}">/WEB-INF/JspPage/chapter4/chapter4_{1}.jsp</result>
</action>
关于通配符匹配的优先权:
(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,这会减少程序的效率。
Struts2.3动态调用报 No result defined for action 错误的更多相关文章
- Struts2问题,已解决No result defined for action and result input
struts2.1.8 必须在struts.xml中配置namespace属性 如果你在2.0中一切OK,但是在2.1中确出现了No result defined for action的异常,就是在因 ...
- Struts2报错:No result defined for action xxx and result input
case如下: 1. 后台程序要升级, 修改了一些功能,但是没有修改或者添加action的参数. 2. 数据库需要升级,执行了一些sql,修改过action的值. 3. 当修改某个已经存在的记录,然后 ...
- [Struts2] No result defined for action ... and result input & Invalid field value for field ...
"No result defined for action ... and result input"错误一般发生在Struts2的拦截器拦截时遇到了问题时.Struts2会将跳转 ...
- struts2没有打印日志原因和No result defined for action XXXAction and result input
在项目中调用一个action的方法的时候发生了一个错误,但是在catalina.out和配置的log4j都没有打印异常,后来在执行的action中加了logger.error("XXXXX& ...
- No result defined for action com.lk.IndexAction and result success
意图访问一个 /es/index.action 竟然出现: [SAE ] ERROR [05-11 13:54:32] [http-80-5] com.opensymphony.xwork2.util ...
- Struts 2.x No result defined for action 异常
这是我跑struts2的第一个例子,跑的也够郁闷的,这个问题烦了我几个钟... 2011-5-10 10:10:17 com.opensymphony.xwork2.util.logging.co ...
- HTTP Status 404 - No result defined for action com.hebky.oa.classEntity.action.EntitysAction and result input
在开发中总遇到这个问题,No result defined for action:原因:Action中的属性值为空的时候,Struts2的默认拦截器会报错,但是又找不到input的Result,不能够 ...
- struts异常:No result defined for action
问题描述: No result defined for action com.freedom.funitureCityPSIMS.controller.login.CheckAction and re ...
- Messages: No result defined for action cn.itcast.oa.test.TestAction and result SUCCESS
Struts Problem Report Struts has detected an unhandled exception: Messages: No result defined for ac ...
随机推荐
- java web 学习笔记 - servlet01
---恢复内容开始--- 1.Servlet介绍 Servlet 是用java语言编写的服务器端小程序,属于一个CGI程序,但与传统的CGI不同的是,它是多线程实现的,并且可以多平台移植. 用户自定义 ...
- 说说C#中list与IList中的区别(转载)
首先IList 泛型接口是 ICollection 泛型接口的子代,并且是所有泛型列表的基接口. 但是它仅仅是所有泛型类型的接口,并没有太多方法可以方便实用,如果仅仅是作为集合数据的承载体,确实,IL ...
- CAD参数绘制多段线(网页版)
多段线又被称为多义线,表示一起画的都是连在一起的一个复合对象,可以是直线也可以是圆弧并且它们还可以加不同的宽度. 主要用到函数说明: _DMxDrawX::PathLineTo 把路径下一个点移到指定 ...
- 时间戳显示为多少分钟前,多少天前的JS处理
/* ** 时间戳显示为多少分钟前,多少天前的处理 ** eg. ** console.log(dateDiff(1411111111111)); // 2014年09月19日 ** console. ...
- 【简●解】POJ 1845 【Sumdiv】
POJ 1845 [Sumdiv] [题目大意] 给定\(A\)和\(B\),求\(A^B\)的所有约数之和,对\(9901\)取模. (对于全部数据,\(0<= A <= B <= ...
- mysql主从同步,主库宕机解决方案
链接:https://blog.csdn.net/zfl589778/article/details/51441719
- js 技巧 (十)广告JS代码效果大全 【1】
广告JS代码效果大全 1.[普通效果] 现在很多网站广告做的如火如荼,现在我就来介绍一下常见的对联浮动广告效果的代码使用方法,介绍的这种效果,在1024*768分辨率下正常显示,在800*60 ...
- Django所包含属性
Django包含的属性 定义属性 概述: 1.django根据属性的类型确定以下信息 2.当前选择的数据库支持字段的类型 3.渲染管理表单时使用的默认html空间 4.在管理站点最低限度的验证 注意: ...
- 集训第四周(高效算法设计)L题 (背包贪心)
Description John Doe is a famous DJ and, therefore, has the problem of optimizing the placement of ...
- Maximun product
Given a sequence of integers S = {S1, S2, ..., Sn}, you shoulddetermine what is the value of the max ...