参考:http://www.cnblogs.com/gsy52300/p/5778754.html

在学习struts框架时经常会使用到通配符调用方法,如下:

<package name="shop" namespace="/" extends="struts-default">        <!-- 配置Action -->                                       <actionname="user_*"  class="userAction" method="{1}">                                   <result name="success">/WEB-INF/jsp/login.jsp</result>                 </action>
</package>

其中的action name="user_*"中*这个符号代表的值会传入method=“{1}”中,并对应action类的一个方法名,这样就能很大程度地减少配置文档中action的数目。

但是在使用这种通配符方法的时候,经常会看到这样的映射错误提示

Struts has detected an unhandled exception:
Message:There is no Action mapped for namespace [/] and action name [user_login] associated with context path [/shop].

如果看到提示的是映射问题,你可以按照映射路线排除一遍,

第一步:先排查访问的链接有没有问题(细节问题)

第二步:查看struts.xml的配置(仔细排查,出现问题几率很大)

第三步:查看相关的action类及方法(比如return的值是不是跟配置文件中的result对应得上等)

第四步:查看结果响应页面是否存在问题(出现问题的几率比较小)

(具体的做法我不细讲了,网上很多优秀篇章都有提及,可自行百度)

如果上面的四个步骤没出问题,可是还是报错,怎么办?那就可能是内部属性配置的问题了

在Struts 2的核心jar包struts2-core中,有一个default.properties的默认配置文件(路径:struts-2.5.2-min\lib\org\apache\struts2\default.properties)里面配置了一些全局的信息

其中有条语句是配置动态方法调用的

struts.enable.DynamicMethodInvocation = true

当使用动态调用方法时(action名 + 感叹号 + 方法名进行方法调用),需要将其属性改为true,

当使用通配符调用语法时,建议将其属性改为false(struts2.5.2中默认是false)

当我们需要将其属性改成false时,

只在struts.xml配置文件中加入此句即可修改属性

<constant name="struts.enable.DynamicMethodInvocation" value="false" />

很多网友都说改了之后都行了,不过我换了struts2.5之后,整了好久都还是不行……

最后是在配置文档struts.xml的Action中配置了

<allowed-methods>Action内的方法名</allowed-methods>才成功了

比如上面代码修改如下:

<package name="shop" namespace="/" extends="struts-default">                                    <!-- 配置Action -->                                                               <action name="user_*"  class="userAction" method="{1}">                                  <result name="success">/WEB-INF/jsp/login.jsp</result>                  <allowed-methods>login</allowed-methods>                                      </action>
</package>                                                                                                                                                                

备注:红色代码中的login为对应Action类里面的方法名,可以加上多个方法,方法名之间用逗号隔开。

总结:在struts2.3之前的版本,正常的配置就可以了,但在struts2.3版本之后,使用通配符调用方法时,内部会验证是否允许访问该方法,所以要加上

<allowed-methods>方法名1,方法名2…</allowed-methods>代码。

希望这个小知识点能帮助更多编程爱好者,在java道路上,与志同道合者共勉!!

(该篇随笔由我之前的csdn博客搬家而来)

转载于:https://www.cnblogs.com/lxboy2009/p/6440239.html

struts2.5框架使用通配符指定方法(常见错误)相关推荐

  1. 父类为模板类,子类继承父类调用父类的方法常见错误

    相信大家都对继承很清楚,那么如果是父类为模板类,派生出来的子类创建的对象,具体实现要如何调用父类的方法呢? 我们用代码尝试一下 #include<iostream> #include< ...

  2. Vue项目打包部署教程及常见错误-前端开发

    目录 通用指南 打包 部署 1.静态或独立于后端部署前端应用时 2.Vue CLI 处理静态资源并和后端框架一起作为部署的一部分时 常见错误 一.publicPath引起的错误 二.在 history ...

  3. struts2对action的指定方法进行校验

    2019独角兽企业重金招聘Python工程师标准>>> 在strust2中,我们可以实现对action的所有方法进行校验或者对action的指定方法进行校验. 一.对于输入校验str ...

  4. struts2开发action 的三种方法以及通配符、路径匹配原则、常量

    struts2开发action 的三种方法 1.继承ActionSupport public class UserAction extends ActionSupport {// Action中业务处 ...

  5. MINIGUI常见错误集及解决方法

    MINIGUI常见错误集及解决方法 个人前言:其中错误1到16是直接转载的一篇博客,在移植MiniGUI过程中碰到的问题远远不止这些,我只是拿这16个先开个头,以后会将我自己在移植MiniGUI的过程 ...

  6. centos linux 系统日常管理4 scp,rsync,md5sum,sha1sum,strace ,find Rsync 常见错误及解决方法 第十七节课...

    centos linux 系统日常管理4  scp,rsync,md5sum,sha1sum,strace ,find Rsync 常见错误及解决方法  第十七节课 rsync可以增量同步,scp不行 ...

  7. WCF项目中出现常见错误的解决方法:基础连接已经关闭: 连接被意外关闭

    原文:WCF项目中出现常见错误的解决方法:基础连接已经关闭: 连接被意外关闭 在我们开发WCF项目的时候,常常会碰到一些莫名其妙的错误,有时候如果根据它的错误提示信息,一般很难定位到具体的问题所在,而 ...

  8. Elasticsearch常见错误及解决方法

    Elasticsearch常见错误及解决方法: 1.启动时候报错:Caused by: java.net.BindException: Cannot assign requested address ...

  9. SSL证书七大常见错误及解决方法

    无论经验多么丰富,在购买或是安装SSL证书的过程中我们总会遇到这样或那样的错误.那么SSL证书安装有哪些常见错误呢?出现这些错误的原因以及解决方法是什么呢?小编为您总结了SSL证书七大常见错误及解决方 ...

最新文章

  1. iOS 仿看了吗应用、指南针测网速等常用工具、自定义弹出视图框架、图片裁剪、内容扩展等源码...
  2. [云炬python3玩转机器学习] 5-7,8 多元线性回归正规解及其实现
  3. 递归函数里面又有2个调用自身的递归函数里面参数变化总结
  4. 三问Spring事务:解决什么问题?如何解决?存在什么问题?
  5. Android下的数据储存方式(三)
  6. 阶段3 3.SpringMVC·_04.SpringMVC返回值类型及响应数据类型_2 响应之返回值是String类型...
  7. mysql 查询每个班级的前三名
  8. r语言 转录本结构及丰度_技术贴 | R语言:envfit环境因子和菌群回归分析
  9. 玉品游戏java_整蛊游戏N合一(玉品)
  10. itunes下载管理appstore老版本app
  11. Java程序员拼多多3轮面试,这些面试题你能掌握多少?
  12. 【一些笔记】TensorFlow笔记
  13. 用setTimeout来实现setInterval
  14. Linux如何安装BeyondCompare
  15. lcd屏和amoled屏哪个护眼呢 lcd屏和amoled屏哪个更耗电
  16. CSS【Text(文本)+Fonts(字体)】
  17. HTML5新标签语义及用法
  18. 深入分析netty(一)BootStrap与ServerBootStrap
  19. 高级实训任务二U-Net图像分割实验报告
  20. 2021上海交大附中高考成绩查询,2021年上海高中排名

热门文章

  1. 【实习之T100开发】Genero FGL (TIPTOP4GL) 学习笔记(2)
  2. 【小型JavaFx项目】文字小冒险游戏
  3. 2021总结-》2022年
  4. 数学分析笔记—python基础语法
  5. 自带python库的环境软件_pyenv虚拟环境管理python多版本和软件库
  6. python递归(一分钟读懂)
  7. 标准h5的定位_不但亲民还安全 红旗H5车门/防撞梁拆解
  8. 合肥工贸高级技工学校计算机系,合肥工贸高级技工学校
  9. win7 oracle数据库删除用户名,图文帮你win7系统删除Oracle数据库中的用户的具体方法...
  10. 人脸关键点:TCNN-Tweaked Convolutional Neural Networks