关于jfinal多个拦截器出现的Problem accessing *.jsp. Reason:问题

后海 发布于 2015/12/05 20:05
阅读 2K+
收藏 0

@JFinal 你好,想跟你请教个问题:

最近在做一个功能,需要方式页面多次提交,所以做了一个通用的Tokken拦截器,

/**
 * 防止表单重复提交
 */
public class TokenInterceptor implements Interceptor{
	public void intercept(Invocation inv){
		//动态参数
		String flystoke = inv.getController().getPara("flystoke");
		if(flystoke != null && !"".equals(flystoke)){
			boolean token = TokenManager.validateToken(inv.getController(),flystoke);
			if(!token){
				inv.invoke();
			}else{
				inv.getController().setAttr("flystokeMsg","请不要重复提交");
			}
		}else{
			inv.invoke();
		}
	}
}

action上边加上拦截器注解:

@Before({TokenInterceptor.class,UsersVal.class})
public void doRegs(){}

结果就出现了一个问题,页面上原本doRegs是一个action请求,请求后竟然变成了jsp请求。有些人说是拦截器中的

inv.invoke();
没有把Controller的请求域移交到下一个处理域,还请帮忙解答。

Problem accessing /gmb/users/doRegs.jsp. Reason:

使用的是jetty1.8 + jfinal2.0

加载中
0
后海
后海

还有一种方式是使用Validator,但是一直有一个疑问,

1. 验证如何做到自动判定,从哪里来,返回到哪里去?(目前是写死的)

protected void handleError(Controller c) {

c.renderJsp("/register.jsp");

}

http://www.oschina.net/question/2381864_242532


另一种就是当前的拦截器用法,同样尴尬就是,拦截器是从哪里来,到哪里去,还有带上请求域数据。貌似目前的拦截器用.invoke()后,就变成了默认配置的jsp请求域了。

原本是action请求,拦截处理后变成了jsp请求。

返回顶部
顶部