Как добавить список параметров excludeMethods
для моего пользовательского перехватчика в файле struts.xml
. workflow
и validation
перехватчик имеют этот параметр excludeMethods
через то есть ведьма workflow
перехватчик не будет срабатывать для исключенных методов, как описано, как это:Как добавить список параметров excludeMethods для пользовательского перехватчика в struts2
<action name="action" class="abc.ActionClass">
<interceptor-ref name="defaultStack">
<param name="workflow.excludeMethods">doSomething</param>
</interceptor-ref>
<result>Success.jsp</result>
</action>
Это я знаю. Я хочу знать, как я могу сделать то же самое для своего пользовательского перехватчика. Я попытался, но потерпел неудачу. Вот мой код:
index.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<s:url action="go2" method="forGo2" var="v_go2"/>
<a href="<s:property value='#v_go2'/>">HIT to check if excludeMethods parameter working or NOT.</a>
</body>
</html>
struts.xml
<?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="abc" extends="struts-default">
<interceptors>
<interceptor name="cust_intrcptr" class="pack.MyInterceptor2">
<param name="excludeMethods">forGo2</param> <!-- parameter for excluded method -->
</interceptor>
<interceptor-stack name="mystack2">
<interceptor-ref name="defaultStack"/>
<interceptor-ref name="cust_intrcptr"/>
</interceptor-stack>
</interceptors>
<action name="go2" class="pack.GoAction" method="forGo2">
<interceptor-ref name="mystack2"/>
<result name="success">/welcome2.jsp</result>
</action>
</package>
</struts>
заказ перехватчик
package pack;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;
public class MyInterceptor2 implements Interceptor{
@Override
public void destroy() {
// TODO Auto-generated method stub
}
@Override
public void init() {
// TODO Auto-generated method stub
}
@Override
public String intercept(ActionInvocation ai) throws Exception {
// TODO Auto-generated method stub
System.out.println("#####Inside Interceptor#####");
ai.invoke();
}
}
Действие Класс
package pack;
import com.opensymphony.xwork2.ActionSupport;
public class GoAction extends ActionSupport{
public String forGo2(){
return "success";
}
}
Выход генерируется без каких-либо ошибок. Но в консольном выпуске я просматриваю «#####Inside Interceptor#####
», которого я не ожидал, потому что я исключил перехватчик для метода forGo2
. Как я могу исключить этот перехватчик для любого данного метода в этом случае, например forGo2
.
он решил мою проблему. Спасибо Большое. – JPG