会话到期时的授权重定向不适用于提交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)。
三国纷争
TA贡献1804条经验 获得超7个赞
JSF ajax请求需要特殊的XML响应。HTTP 302响应不会被JSF ajax引擎解释为窗口重定向,而是重定向到新的XML响应。但是,如果该重定向实际上返回HTML页面,则会失败并显示“无反馈”。您需要返回一个特殊的XML响应,告诉JSF ajax引擎在给定的URL上发送重定向。您可以通过检查提到的响应头值来识别JSF ajax请求。在JSF方面,这通常是“幕后”处理的ExternalContext#redirect()
。但是在JSF上下文之外,你必须手动处理它。
添加回答
举报
0/150
提交
取消