Struts(八):动态方法调用

动态方法调用:通过url动态调用action中的方法。

默认情况下,Struts的动态方法调用处于禁用状态。

测试定义一个action类:

 1 package com.dx.actions;
 2 
 3 public class DynamicAction {
 4     public String index(){
 5         System.out.println("index method");
 6         return "success";
 7     }
 8     
 9     public String save1(){
10         System.out.println("save1 method11");
11         return "success";
12     }
13 }

修改配置struts.xml

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE struts PUBLIC
 3     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
 4     "http://struts.apache.org/dtds/struts-2.3.dtd">
 5 
 6 <struts>
 7 
 8     <constant name="struts.enable.DynamicMethodInvocation" value="true" />
 9     <constant name="struts.devMode" value="false" />
10 
11     <package name="default" namespace="/" extends="struts-default">      
12         <action name="dynamicTest" class="com.dx.actions.DynamicAction" method="index">
13             <result name="success">/WEB-INF/test.jsp</result>
14         </action>
18     </package>
19 
20 
21 </struts>

 

添加测试页面index.jsp

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>Insert title here</title>
 8 </head>
 9 <body>
10 <a href="dynamicTest.action">test</a><br/>
11 <a href="dynamicTest!save1.action">test2</a>
12 </body>
13 </html>

点击链接后,发现两个方法都可以被调用,尽管我们没有定义save方法为一个action在struts.xml中。

注意:

及时定义了save的action节点

1 <action name="saveTest" class="com.dx.actions.DynamicAction" method="save1">
2             <result name="success">/WEB-INF/tes25t.jsp</result>
3         </action>

 

,通过

<a href="dynamicTest!save1.action">test2</a>

调用,也不会跳转到指定的页面。而是跳转到了test.jsp页面,比较奇怪。

 

posted @ 2016-07-19 20:38  cctext  阅读(282)  评论(0编辑  收藏  举报