开发者社区> 问答> 正文

Problem accessing *.jsp. Reason:问题 400 请求报错 

关于jfinal多个拦截器出现的

@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

展开
收起
kun坤 2020-05-28 16:08:55 1318 0
1 条回答
写回答
取消 提交回答
  • 还有一种方式是使用Validator,但是一直有一个疑问,
    1. 验证如何做到自动判定,从哪里来,返回到哪里去?(目前是写死的)
    protected void handleError(Controller c) {
    c.renderJsp("/register.jsp");
    }
    http://www.oschina.net/question/2381864_242532

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

    2020-05-29 13:07:34
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关课程

更多

相关电子书

更多
Scaling Spark applications by connecting code to resource consumption 立即下载
A-New-Era-Of-SSRF-Exploiting-URL-Parser-In-Trending-Programming-Languages 立即下载
Apache Wicket User Guide-Refer 立即下载