Java 如何重定向到切换到login required=true之前调用的页面

Java 如何重定向到切换到login required=true之前调用的页面,java,jsf,redirect,seam,Java,Jsf,Redirect,Seam,我有一个按钮,可以切换到广告的详细信息。但要查看广告的详细信息,用户需要登录。因此,在pages.xml中,我定义了重定向到登录页面: <rule if="#{!identity.loggedIn}"> <redirect view-id="/login.xhtml" /> </rule> 我不知道登录后如何将用户重定向到广告详细信息 当用户未登录时,他将从“../app/advert/3”切换到“../app/user”。我不知道如何将用户重定向到

我有一个按钮,可以切换到广告的详细信息。但要查看广告的详细信息,用户需要登录。因此,在pages.xml中,我定义了重定向到登录页面:

<rule if="#{!identity.loggedIn}">
  <redirect view-id="/login.xhtml" />
</rule>

我不知道登录后如何将用户重定向到广告详细信息

当用户未登录时,他将从“../app/advert/3”切换到“../app/user”。我不知道如何将用户重定向到广告的细节。我正在丢失有关广告id的信息。 我试图在pages.xml中定义param:

<page login-required="false" view-id="/advert/*">
  <rewrite pattern="/advert/{advertId}" />
  <param name="advertId" value="#{contextUser.setadvertId(advertId)}" />...

...

但是没有设置广告ID。有什么想法吗?

这是最简单的方法

页面.xml
文件中删除
。您需要做的只是将广告页面标记为
login required=“true”

 <page login-required="true" view-id="/advert/*">
   <rewrite pattern="/advert/{advertId}" />
   <param name="advertId" value="#{contextUser.setadvertId(advertId)}" />...

谢谢你的回复。我已将事件侦听器添加到components.xml。但我也在pages.xml中定义了从登录到用户视图的重定向:我想知道这是否会导致问题?但若用户选择登录选项,我需要重定向到用户帐户。
 <page login-required="false" view-id="/advert/*">
   <action execute="#{...}" /> <!-- execute any action to trigger rule evaluation -->
   <navigation>
     <rule if="#{not identity.loggedIn}">
       <!-- raise the event to trigger the capture of the current view -->
       <raise-event type="org.jboss.seam.security.notLoggedIn" />
       <redirect view-id="/login.xhtml" />
     </rule>
   </navigation>
   <rewrite pattern="/advert/{advertId}" />
   <param name="advertId" value="#{contextUser.setadvertId(advertId)}" />...