struts通配符实现简化配置,版本:strusts-2.5.22
package com.lyq.action;
import com.opensymphony.xwork2.ActionSupport;
public class user{
public String save(){
return "save";
}
public String update(){
return "update";
}
public String delete(){
return "delete";
}
public String find(){
return "find";
}
}
<?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="all" namespace="/" extends="struts-default">
<action name="user_*" class="com.lyq.action.user" method="{1}">
<result name="save">save.jsp</result>
<result name="update">update.jsp</result>
<result name="delete">delete.jsp</result>
<result name="find">find.jsp</result>
</action>
</package>
</struts>
user_save能正常访问,但是user_update却提示
消息 There is no Action mapped for namespace [/] and action name [user_find] associated with context path [/Struts2_war_exploded].
查证后发现是struts.xml配置问题
<?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>
<!--允许动态调用方法,通配符+占位符组合,必须加上这行代码-->
<constant name="struts.enable.DynamicMethodInvocation" value="true"/>
<constant name="struts.devMode" value="false"></constant>
<package name="all" namespace="/" extends="struts-default">
<!--表示允许动态调用的方法-->
<global-allowed-methods>regex:.*</global-allowed-methods>
<action name="user_*" class="com.lyq.action.user" method="{1}">
<result name="save">save.jsp</result>
<result name="update">update.jsp</result>
<result name="delete">delete.jsp</result>
<result name="find">find.jsp</result>
</action>
</package>
</struts>
修改后正常

本文介绍如何在Struts2框架中使用通配符和占位符进行动态方法调用,解决特定方法无法访问的问题。通过开启动态方法调用并设置全局允许的方法,实现了user模块下save、update、delete和find等操作的简化配置。
86

被折叠的 条评论
为什么被折叠?



