ssh使用通配符映射报错There is no Action mapped for namespace [/] and action name [user_registPage] associated

在做SSH整合项目是使用通配符方法调用时一直报错:There is no Action mapped for namespace [/] and action name [user_registPage] associated with context path [/shop_ssh_war_exploded].
Action映射配置如下:

<package name="useraction" extends="struts-default" namespace="/">
    <!-- 配置用户模块的Action -->
    <action name="user_*" class="cn.itcast.shop.user.action.UserAction"  method="{1}">
        <result name="{1}">/WEB-INF/{1}.jsp</result>
</action>
</package>

报错:
在这里插入图片描述

在网上搜了发现,我使用的struts2.5的,struts2.3对于通配符+占位符组合模式的action方法的动态调用是默认开启的,但struts2.5为了更加安全和严谨,将其默认设置为关闭,所以需要在struts2.5版本的struts.xml中添加动态调用:

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

同时.在struts2的2.5版本中添加了对方法访问的权限,所有在action内部还要增加"allowed-methods"方法的标签

<action name="user_*" class="cn.itcast.shop.user.action.UserAction" method="{1}" >
    <result name="{1}">/WEB-INF/jsp/{1}.jsp</result>
   <allowed-methods>registPage,loginPage</allowed-methods>
</action>

同时,struts.xml的约束文件应该变成

<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
        "http://struts.apache.org/dtds/struts-2.5.dtd">

否则"allowed-methods"标签将不能被识别而报错。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值