Struts初探(二)

总是找不到对应的action,但别的没用到动态方法调用的都没有问题。

报异常:java.lang.reflect.InvocationTargetException - Class: com.opensymphony.xwork2.inject.ContainerImpl$Me

实在是搞不清楚,我还以为全半角有问题,尚学堂的现有的工程,进去操作了一下是没有问题的,struts2-core-2.1.6.jar,我这里是2.3.31了,想一下只能是这个问题了吧。

在Struts2的action配置中,可以使用method属性来实现方法的动态调用,除此之外还有一种方式可以实现方法的动态调用,

那就是在url中的action后跟!再跟指定的方法名,比如localhost:80/test!hello,那么就会访问名称为test的action的hello方法。

但是,有的时候,不知道为什么,使用!访问的时候,会报异常,找不到名字为*!*的action。这是因为你在stuts的配置文件中将Struts2的!调用功能关闭导致的,解决方案如下:

在struts.xml文件中添加常量,

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

通过添加常量,打开了Struts2的动态方法调用开关。问题解决。

为什么Struts2中会引入这个功能的开关呢,原因如下:

1 )如果使用的是 POJO action ,!动态方法调用可能会引起安全问题;

2 )动态方法调用和从 Struts 1 中引用过来的通配符方法有重叠;

摘自百度经验

时间: 2024-10-17 04:35:02

Struts初探(二)的相关文章

EF6.0+APS.NET MVC5.0项目初探二(类库引用关系及说明)

接着上一篇(EF6.0+APS.NET MVC5.0项目初探一(界面展示),说说我搭建项目的一点心得. 第一步:我喜欢先建一个空的解决方案,只是个人喜好,不喜勿喷,呵呵. 如图: 第二步:添加项目所需要的类库: 如图: 第三步:添加类库引用 UI.Manage->BusinessLogic.BLL,Domain.Entity,Domain.ViewModel,Infrastructure.Common,UI.HtmlHelper BusinessLogic.BLL->Domain.Entity

struts初探

首先:struts2官网, https://struts.apache.org/. 可以根据如下地址进行struts2的第一个项目helloworld guides页面 >> Tutorials(教程;学习指南) >> Getting Started >> Hello World Using Struts 2. 以下是我在做第一个项目时遇到的问题: 1. 500错误,以下是浏览器显示的错误日志 500 Internal Privoxy Error Privoxy enc

初探二叉搜索树

二叉搜索树 二叉搜索树很明显来自于一种思想:二分查找. 二叉搜索树 很明显: 二叉搜索树并不要求是一棵完全二叉树 则左子树上所有结点的值均小于它的根结点的值:右子树上所有结点的值均大于它的根结点的值: 它的左.右子树也分别为二叉搜索树. 对于二叉搜索树而言,有以下典型的操作: 1 插入,删除 2 查找 3 遍历:深度优先遍历(包括前序,中序,后序三种方式),广度优先遍历 对于插入而言:是一个比较简单的过程.自己思考代码的实现. 删除操作比较麻烦,先不讲 而关于查找操作吗,和插入操作差别不大,不讲

Struts(十二):异常处理:exception-mapping元素

配置当前action的声明异常处理 1.exception-mapping元素中有2个属性 exception:指定需要捕获的异常类型 result:指定一个响应结果,该结果将在捕获到异常时被执行.即可以来自当前action的声明,也可以来自global-results声明. 2.可以在视图上通过<s:property>标签显示异常消息. 可以通过global-exception-mappings元素为应用程序提供一个全局性的异常捕获映射. 1.但在global-exception-mappi

JavaScript初探二

//----------总结 //01.查找dom元素 document.getElementById();//通过id获取一个dom元素 document.getElementsByClassName();//通过class获取dom数组 document.getElementsByTagName();//通过标签名获取dom数组 //02.修改dom元素 dom.type = "text"//type属性 dom.innerHTML//双标签的文本值 这里注意innerText d

JavaScript初探 二

//----------总结01.查找dom元素 document.getElementById();//通过id获取一个dom元素document.getElementsByClassName();//通过class获取dom数组document.getElementsByTagName();//通过标签名获取dom数组 //02.修改dom元素 dom.type = "text"//type属性dom.innerHTML//双标签的文本值 这里注意innerTextdom.valu

asp.net core 初探 二

今天用@宇内流云大大的jexus 体验一下生产环境的发布,运行. 生产环境: centos 7 jexus 5.8.1 独立版 包含了mono (mono安装真心痛苦……) 开发环境就是昨天的Ubuntu +.net core sdk 了. 先发布我们昨天新建的web项目: 输入dotnet publish -o xxxxx/xxx 我这里报了个错NPM 找不到 那就先安装npm  sudo apt-get install npm 安装npm的时候一直提示我:无法获得锁 /var/lib/dpk

.Net开源之corefx、coreclr初探(二)

接上文,上周编译coreclr没有通过,我这边编译失败的主要原因是操作系统是x86的,而github上的开发guide,明确的要求windows平台下编译时支持的是x64,我换成了x64电脑进行编译就ok了,编译过程中持续的时间比较长,采用CMAKE进行编译时的画面如下: 大概10分钟左右,编译成功,显示画面如下: 全部完成后的输出结果如下: 编译完成后在生成的文件夹下,CMAKE文件夹下会有corefx的VS项目工程文件,可以用VS2013打开,如下图所示: 打开该工程文件,内容如下所示,整个

go revel 初探二

在自己的revel项目中增加新的配置文件 conf/my.conf,内容如下: # 网站信息配置 [website] website.version=1.0 website.sitedomain= 网上查了半天,竟然没有找到revel的配置怎么读取,开始直接使用"github.com/robfig/config"库(当然revel本身也使用这个库),这是我的数据库配置 //判断是否是系统的分隔符 separator := "/" if os.IsPathSepara