记录一次在struts.xml文件中使用通配符的问题

在日常学习中遇到一个关于struts2配置通配符的问题。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
        "http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
    <package name="privilege" namespace="/" extends="struts-default">
        <action name="privilege_*" class="com.jm.struts.action.PrivilegeAction" method="{1}">
            <result name="success">/index.jsp</result>
        </action>
    </package>
</struts>

以上是struts2的struts.xml配置文件中的一段配置,目的是想通过struts2的通配符解决action重复冗余的问题。但是启动项目使用浏览器访问时,出现一个意想不到的错误:

There is no Action mapped for namespace [/] and action name [privilege_login] associated with context path [/demo_struts]

这个错误大致意思是找不到privilege_login对应的action。这是为啥呢?查阅了很多资料发现,原来是struts2的dtd的版本问题。在这个struts.xml配置文件中我使用的是2.5版本,这个版本会有一个校验的过程,内部会验证是否允许访问这个方法。

解决方案:

  1. 修改版本,即改为2.3版本
  2. 不改变版本号,在action标签中添加,形如:
<allowed-methods>login,register</allowed-methods>

标签中指定允许访问的方法名称。

测试通过,完美解决!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值