注意
我有ServletFilter
用于通过 <url-pattern>
检查用户是否已经登录。如果用户未登录,则重定向到 login.xhtml
.
我的问题
用户登录后,我的程序总是重定向dashboard.xml
(基于 navigation-rule
)。我想重定向last visited page
自动地。您能提供可能的方法吗?
目前我的解决方案适用于此
但是,我不乐意使用它。是Seam
支持?您能提供更好的方法吗?
在我的ServletFilter
,我保留上次访问的页面如下
AuthenticationFilter.java
httpSession.setAttribute(Constants.ORIGINAL_VIEW_KEY, requestPath);
在我的LoginBean
,在用户登录后重定向最后访问的页面。
LoginBean.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();
最佳答案
从login.page.xml中删除以下内容
<navigation from-action="#{identity.login}">
<rule if="#{identity.loggedIn}">
<redirect view-id="/view/dashboard.xhtml"/>
</rule>
关于java - JBoss Seam 可以在使用登录页面后重定向用户的 "Last Visited Page"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12617085/