为了账号安全,请及时绑定邮箱和手机立即绑定

会话到期时的授权重定向不适用于提交JSF表单,页面保持不变

会话到期时的授权重定向不适用于提交JSF表单,页面保持不变

杨魅力 2019-07-27 10:31:39
会话到期时的授权重定向不适用于提交JSF表单,页面保持不变我正在使用JSF2。我已经实现了一个自定义面部servlet,如下所示:public class MyFacesServletWrapper extends MyFacesServlet {     // ...}其中我正在进行一些授权检查并在用户未登录时发送重定向:public void service(ServletRequest request, ServletResponse response) {     HttpServletRequest req = (HttpServletRequest) request;     HttpServletResponse res = (HttpServletResponse) response;     if (...) {         String loginURL = req.getContextPath() + "/LoginPage.faces";         res.sendRedirect(loginURL);     }}这在用户尝试导航到另一个页面时有效。但是,当JSF命令链接/按钮提交JSF表单时,这不起作用。该行sendRedirect()线被击中并执行,没有异常被抛出了,但用户停留在同一页面。基本上,根本没有视觉变化。为什么这适用于页面导航,而不是表单提交?
查看完整描述

3 回答

?
HUH函数

TA贡献1836条经验 获得超4个赞

。FacesContext.getCurrentInstance()getExternalContext()重定向( “newpage.xhtml”); 试试这....代替res.sendredirect(cpath)。


查看完整回答
反对 回复 2019-07-27
?
三国纷争

TA贡献1804条经验 获得超7个赞

JSF ajax请求需要特殊的XML响应。HTTP 302响应不会被JSF ajax引擎解释为窗口重定向,而是重定向到新的XML响应。但是,如果该重定向实际上返回HTML页面,则会失败并显示“无反馈”。您需要返回一个特殊的XML响应,告诉JSF ajax引擎在给定的URL上发送重定向。您可以通过检查提到的响应头值来识别JSF ajax请求。在JSF方面,这通常是“幕后”处理的ExternalContext#redirect()。但是在JSF上下文之外,你必须手动处理它。

查看完整回答
反对 回复 2019-07-27
  • 3 回答
  • 0 关注
  • 372 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信