您的位置:首页 > 编程语言 > Java开发

Struts2.5使用通配符的方式实现动态方法调用报错

2016-11-24 22:39 621 查看
在Struts2.5使用通配符的方式实现动态方法调用时报错,困扰了好久。。。

代码如下

<package name="default" extends="struts-default" namespace="/">

    </package>

    <package name="users" namespace="/users" extends="default">

    <action name="*_*" class="action.{1}Action" method="{2}">

    <result name="login_success">/users/Users_login_success.jsp</result>

    <result name="login_failure">/users/Users_login.jsp</result>

    </action>

 </package>

报错信息如下:There is no Action mapped for namespace [/users] and action name [Users_login] associated with context
path [/Hibernate-struts-student].

可以确定的是,我的xml配置没有问题

在之前的版本,动态使用方法时,要把Struts.xml中添加<constant name="struts.enable.DynamicMethodInvocation" value="true"/>

但是在2.5版本,这个方法行不通。原来在struts2.5 中为了增加安全性,在 struts.xml 添加了这么个属性:<allow-methods>方法名(可多个)</allowmethods>,添加完成之后就可以正常运行通配符的配置了。

 eg:<allowed-methods>add,addUI,list</allowed-methods>

果然在修改之后可以了,修改后的文件:

<package name="users" namespace="/users" extends="default">
    <action name="*_*" class="action.{1}Action" method="{2}">
    <result name="login_success">/users/Users_login_success.jsp</result>
    <result name="login_failure">/users/Users_login.jsp</result>
    <allowed-methods>login</allowed-methods>
    </action>
 </package>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: