用过滤器的match方法中的上下文对象getMethod就不是null的
问答
为什么在动作链里面的process方法中用ActionContext对象的getMethod()方法获取出来的Method会是空的呢?
标签:
无
7 回复
跟放入的位置有关, method对象是ModuleProcessor放进ActionContext
另外, Processor.init方法时已经可以拿到method, 不需要每次取. Processor对象, 是每个方法建一次的, 并非共享.
@wendal 没怎么看明白,是说我得重写init方法吗?我现在是想从执行的接口中获取方法上的注解然后做判断不通过的话会返回消息给前台。
public class TestProcessor extends AbstractProcessor {
@Override
public void process(ActionContext ac) throws Throwable {
HttpServletRequest request = ac.getRequest();
Method method = ac.getMethod();
//Annotation[][] annotations = method.getParameterAnnotations();
//获取方法参数上的注解做进一步判断和处理
doNext(ac);
}
}
在上下文对象中获取Method的时候是空的。如果我在init方法里获取那init方法里怎么获取request呢?
public class TestProcessor extends AbstractProcessor {
private Method method;
private Annotation[][] annotations;
public void init(NutConfig config, ActionInfo ai) throws Throwable {
this.method = ai.getMethod();
annotations = method.getParameterAnnotations();
// 及其他预处理...
}
@Override
public void process(ActionContext ac) throws Throwable {
HttpServletRequest request = ac.getRequest();
//获取方法参数上的注解做进一步判断和处理
// 取实例变量method和annotations做操作.
doNext(ac);
}
}
@wendal init()方法只有启动服务器的时候才进入,发送请求的时候并没有进去吖
@wendal 存起来那我在process方法里的时候怎么知道当前前台请求的是哪个Module的哪个方法?
添加回复
请先登陆