首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

struts2依据action中的方法参数值来动态调用方法

2012-10-29 
struts2根据action中的方法参数值来动态调用方法struts2 根据action中的方法参数值来动态调用方法,例如htt

struts2根据action中的方法参数值来动态调用方法

struts2 根据action中的方法参数值来动态调用方法,例如http://localhost:8080/login.do?method=dynamicMethod

根据method参数来调用action中的dynamicMethod方法,主要是自定义拦截器来实现,代码如下

package com.tedonl.interceptor;import javax.servlet.http.HttpServletRequest;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionInvocation;import com.opensymphony.xwork2.interceptor.AbstractInterceptor;public class DynamicMethodInterceptor extends AbstractInterceptor {private static final long serialVersionUID = -2341874790105032740L;@Overridepublic String intercept(ActionInvocation invocation) throws Exception {HttpServletRequest request = ServletActionContext.getRequest();String myMehtod = request.getParameter("mehtod");if (myMehtod != null) {try {java.lang.reflect.Method method = invocation.getAction().getClass().getMethod(myMehtod);String result = (String) method.invoke(invocation.getAction());if (result != null) {return result;} else {return null;}} catch (Exception e) {e.printStackTrace();}}return invocation.invoke();}}

?然后在web.xml中配置上自己的拦截器即可

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"><struts><package name="login" namespace="/login" extends="json-default"><interceptors><interceptor name="MyInterceptor" /><interceptor-ref name="defaultStack"></interceptor-ref></interceptor-stack></interceptors><default-interceptor-ref name="MyDefaultStack"></default-interceptor-ref><action name="login" method="{1}"><result name="success" type="json" /></action></package></struts>
?

热点排行