我有一个自定义拦截器。我希望这个拦截器能够在所有动作调用上运行,除了少数几个。我想对此进行编程(为了扩展性/清晰度),而不是使用if / else语句在拦截器的intercept()
方法本身中检查操作的名称。
我认为可能会使用Struts2的“排除方法”功能来完成,但我仍然坚持使用具体的细节。我认为我的拦截器需要扩展MethodFilterInterceptor
,但它有2个拦截方法,并且API在说出每个应该做的事情上没有多大帮助:
protected abstract String doIntercept(ActionInvocation invocation)
Subclasses must override to implement the interceptor logic.
字符串拦截(ActionInvocation调用)
Override to handle interception
答案 0 :(得分:3)
你正在考虑相反的方式:
而不是检查Action名称(或更好,instanceOf
以检查特定的Action Interface
)以查看它是否应该做一些事情,只需告诉Action使用不同的Interceptor Stack
例如,您可以说您的自定义堆栈(包含您的拦截器的堆栈)是默认值(然后应用于所有操作),但ActionA,ActionB和ActionX使用DefaultStack运行...
答案 1 :(得分:1)