Struts2 动态调用方法

Posted 南山南

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Struts2 动态调用方法相关的知识,希望对你有一定的参考价值。

struts2动态调用方法有两种方式

方式一:用通配符进行调用:

Action方法:

 1 package com.bjyinfu.struts.actions;
 2 
 3 public class CatchDynamicMethod {
 4 
 5     public String doFirst(){
 6         System.out.println("执行doFirst方法");
 7         return "success";
 8     }
 9 
10     public String doSecond(){
11         System.out.println("执行doSecond方法");
12         return "success";
13     }
14 }

Struts2中注册方法:(注:method对应得是占位符从1开始,在提交请求的时候,*是什么,method对应的就是什么,也就是说提交请求的时候,*对应的应该是对应的方法名称)

1 <struts>
2 
3   <package name="dynamic" namespace="/dynamic" extends="default">
4         <action name="execute_*" class="com.bjyinfu.struts.actions.CatchDynamicMethod" method="{1}">
5             <result name="success">/welcome01.jsp</result>        
6         </action>
7     </package>
8     
9 </struts>

展示页面:

 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>My First Struts2 Project</title>
 8 </head>
 9 <body>
10     welcome01 page
11 </body>
12 </html>

(方法一就是讲通配符*换成方法名即可)

方法二:开启常量设置实现动态调用方法:

再Struts2.xml配置文件中注册方法的时候,将常量"struts.enable.DynamicMethodInvocation"开启

1 <struts>
2   <constant name="struts.enable.DynamicMethodInvocation" value="true"/>
3     <package name="dynamic" namespace="/dynamic" extends="default">
4         <action name="execute" class="com.bjyinfu.struts.actions.CatchDynamicMethod">
5             <result name="success">/welcome01.jsp</result>        
6         </action>
7     </package>
8 </struts>

地址栏访问的时候,http://127.0.0.1:8080/projectName/dynamic/execute!方法名.action

以上是关于Struts2 动态调用方法的主要内容,如果未能解决你的问题,请参考以下文章

Struts2 动态方法调用

Struts2学习四----------动态方法调用

struts2笔记09-动态方法调用

struts2动态方法无法调用

关于Struts2中DMI(动态调用)错误问题

Struts2中动态方法调用