java - JBoss Seam 可以在使用登录页面后重定向用户的 "Last Visited Page"吗?

标签 java jsf seam

注意

我有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/

相关文章:

java - 在 Tomcat 7 上部署 Seam 项目(war 文件)- Maven : two components with same name

jsf - 何时在 JSF 中命名转换器

JSF Tomcat 容器管理身份验证和附加登录按钮

java - Java中的多重排序算法(在已排序字段内排序)

java - 在 JScrollPane 中包含两个 JLabel(一个在另一个之上)

JSF 2 : Accessing managed bean's instance in the phase listener object?

社交网络的 Java 框架

java - 为什么我的围绕另一个点旋转一个点的方法不起作用?

java - 如何通过网络将数据从一个HDFS集群迁移到另一个集群?