可以在pages.xml中重定向到两个不同的页面吗?

时间:2012-04-24 02:15:23

标签: java jsf seam

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文件中执行此操作。

请任何人都可以提供一些技巧吗? 或另一种解决方案?

感谢!!!!!

2 个答案:

答案 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。