关于Struts2 使用! 感叹号 动态调用Action中的方法

原创
2016/06/16 22:59
阅读数 1.9K
  • 首先添加一个UserAction:
    public class UserAction extends ActionSupport {
    	private static final long serialVersionUID = 1L;
    	private String info;
    
    	public String getInfo() {
    		return info;
    	}
    
    	public void setInfo(String info) {
    		this.info = info;
    	}
    
    	public String add() {
    		info = "添加";
    		return "addInfo";
    	}
    
    	public String update() {
    		info = "修改";
    		return "updateInfo";
    	}
    }

    里提供了两个方法:add和update,同时 add方法返回addInfo,update方法返回upateInfo。

  • 下面是struts.xml配置文件。该文件必须放在src的目录下!必须!

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts PUBLIC
    	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    	"http://struts.apache.org/dtds/struts-2.3.dtd">
    <struts>
    	<package name="myPackage" extends="struts-default">
    	    <!-- 定义action name:访问时此Action的URL class:此Action的类名 -->
    		<action name="userAction" class="com.xx.action.UserAction">
    		    <!-- 当返回结果为 addInfo时(返回结果为方法的返回结果),跳到add.jsp -->
    			<result name="addInfo">add.jsp</result>
    			<!-- 当返回结果为 updateInfo时,跳到add.jsp -->
    			<result name="updateInfo">update.jsp</result>
    		</action>
    	</package>
    </struts>

     

  • 当然web.xml中也需要配置struts的Filter过滤器
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
    	id="WebApp_ID" version="3.1">
    	<display-name>Struts2-02</display-name>
    	<welcome-file-list>
    		<welcome-file>index.jsp</welcome-file>
    	</welcome-file-list>
    
    	<filter>
    		<filter-name>struts2</filter-name>
    		<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class>
    	</filter>
    
    	<filter-mapping>
    		<filter-name>struts2</filter-name>
    		<url-pattern>/*</url-pattern>
    	</filter-mapping>
    </web-app>
     

上述三步完成后,就可以建立访问连接了。在index.jsp里调用UserAction的add和update方法。

<a href="userAction!add">添加</a><br />
<a href="userAction!update">修改</a><br />

userAction为struts.xml文件中配置的Action节点的name属性。使用!分隔Action请求和请求的字符串,而请求的字符串必须和UserAction中的方法名相同!

此时基本完成,可以通过点击 添加 这个超链接访问action的add方法,并且跳转到add.jsp中!

 

但是,这里缺出现了一个小插曲:

警告: Could not find action or result: /Test01/userAction!add
There is no Action mapped for namespace [/] and action name [userAction!add] associated with context path [/Test01]. - [unknown location]

出现这样的错误。

出现这个的错误,看官方说明:是要在struts.xml中加一句:

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

感叹号方式(需要开启),用这种方式需要先开启一个开关。

注:官网还说不推荐使用这种方式,建议大家不要使用~o(∩_∩)o 

展开阅读全文
打赏
0
1 收藏
分享
加载中
更多评论
打赏
0 评论
1 收藏
0
分享
返回顶部
顶部