新版3.5 forwardAction 与 redirect 问题

public class AdminLoginInterceptor implements Interceptor {

	@Inject
	AccountService accountService;

	@Override
	public void intercept(Invocation inv) {
		BaseAction baseAction = (BaseAction) inv.getController();
		if (StringUtil.isBlank(AccountService.SESSIONID_USER.get(baseAction.getSession().getId()))) {
			if (baseAction.isAjax()) {
				baseAction.renderJson(new Response(GlobalConstant.CODE_REQUEST_ERROR, "您的账号已经在另一处登录了,你被迫下线!"));
				return;
			}
			baseAction.setAttr("msg", "您的账号已经在另一处登录了,你被迫下线!");
			String loginUrl = new String("/admin/account/loginPage?returnUrl="+inv.getActionKey());
			String queryString = baseAction.getRequest().getQueryString();
			if (StringUtil.isNotBlank(queryString)) {
				loginUrl += "&"+queryString;
			}
			baseAction.forwardAction(loginUrl);
//			baseAction.redirect(loginUrl);
			return;
		}
		inv.invoke();
	}

}

loginUrl路径是正确的

使用 baseAction.forwardAction(loginUrl);   始终报404

使用 baseAction.redirect(loginUrl);   可以跳转正常

请问报404的原因?

评论区

JFinal

2018-12-29 11:50

看一下控制台的异常,然后改路由改对一下就好

404 这个事没有什么技巧,将路由改对就好

疑思静想

2018-12-29 11:57

[WARN]-[Thread: XNIO-6 task-8]-[com.jfinal.core.ActionHandler.handle()]: 404 Action Not Found: /admin/account/loginPage?returnUrl=/admin/account/info

疑思静想

2018-12-29 11:58

@JFinal 文档上没有找到这两个方法的描述

JFinal

2018-12-29 12:02

@疑思静想 你在浏览器里面输入下面的 url , 立即就知道为啥错了;
localhost/admin/account/loginPage?returnUrl=/admin/account/info