mi问题基于根据SEAM中URL传递的值重定向到一个页面或另一个页面。例如: 我有这个链接传递URL中的一些参数:
http://localhost:8080/Refund/home.seam?user=012012&name=john&auth_level=4
在seam pages.xml文件中的,我有这个配置:
<page view-id="/home.xhtml" >
<action if="#{authenticator.limpiar}" execute="#{identity.login}" />
<param name="user" value="#{user.number}" />
<param name="name" value="#{user.name}" />
<param name="auth_level" value="#{user.authLevel}" />
<navigation from-action="#{identity.login}" >
<rule if="#{identity.loggedIn}" >
<redirect view-id="/pages/page1.xhtml" />
</rule>
<rule if="#{not identity.loggedIn}">
<redirect view-id="/errorLogin.xhtml"/>
</rule>
</navigation>
</page>
但现在我有另一个参数要添加到此URL。此参数为“emp_id”,可以取值1或15.所以url现在是:
http://localhost:8080/Refund/home.seam?user=012012&name=john&auth_level=4&emp_id=X 其中X可以取1或15。
取决于所需的数字,它必须重定向到一个页面或另一个页面(page1.xhtml或page2.xhtml),但我无法弄清楚如何在pages.xml文件中执行此操作。
请任何人都可以提供一些技巧吗? 或另一种解决方案?
感谢!!!!!
答案 0 :(得分:2)
您始终可以执行自定义操作(例如,执行=“#{redirectAction.go}”)并手动重定向用户。 在接缝方式:
Redirect redirect = Redirect.getInstance();
redirect.setViewId("...")
以标准方式:
FacesContext.getCurrentInstance().getExternalContext().redirect("...");
答案 1 :(得分:2)
如果首先将参数分配给参数,则应该可以这样做。试试这个:
<page view-id="/home.xhtml" >
<action if="#{authenticator.limpiar}" execute="#{identity.login}" />
<param name="user" value="#{user.number}" />
<param name="name" value="#{user.name}" />
<param name="auth_level" value="#{user.authLevel}" />
<param name="emp_id" value="#{somebean.emp_id}"/>
<navigation from-action="#{identity.login}" >
<rule if="#{identity.loggedIn}" >
<redirect view-id="/pages/page1.xhtml" />
</rule>
<rule if="#{not identity.loggedIn}">
<redirect view-id="/errorLogin.xhtml"/>
</rule>
<rule if="#{somebean.emp_id eq '1'}"><!-- use eq if emp_id is a string -->
<redirect view-id="/yourview.xhtml"/>
</rule>
</navigation>
</page>
我认为我曾经使用过类似的东西,但现在没有设置来测试它。但是,我认为你应该考虑别的东西,比如重定向到视图,将emp_id作为参数传递,然后使用重写规则来制作一个漂亮的URL。