笔记
我有ServletFilter
哪个用于检查用户是否已经登录,使用<url-pattern>
. 如果用户未登录,则重定向到login.xhtml
.
我的问题
用户登录后,我的程序总是重定向dashboard.xml
(基于navigation-rule
)。我想last visited page
自动重定向。你能提供可能的方法吗?
目前我的解决方案正在为此工作
但是,我不乐意使用它。Seam
支持吗?你能提供更好的方法吗?
在我的ServletFilter
,我保持上次访问的页面如下
AuthenticationFilter.java
httpSession.setAttribute(Constants.ORIGINAL_VIEW_KEY, requestPath);
在我LoginBean
的 , 在用户登录后重定向最后访问的页面。
登录Bean.java
ELContext elContext = facesContext.getELContext();
Application application = facesContext.getApplication();
ExpressionFactory eFactory = application.getExpressionFactory();
ValueExpression binding = eFactory.createValueExpression(elContext, "#{" + Constants.VISIT_KEY_SCOPE + Constants.VISIT_KEY + "}", Visit.class);
binding.setValue(elContext, visit);
ValueExpression originalViewBinding = eFactory.createValueExpression(elContext, "#{" + Constants.ORIGINAL_VIEW_SCOPE + Constants.ORIGINAL_VIEW_KEY + "}", String.class);
String originalViewId = (String) originalViewBinding.getValue(elContext); <--- last visited view id.
UIViewRoot viewRoot = application.getViewHandler().createView(facesContext, originalViewId) ;
facesContext.setViewRoot(viewRoot);
facesContext.renderResponse();