1

mi question 基于根据 SEAM 中 URL 传递的值重定向到一个页面或另一个页面。例如:我有这个链接在 URL 中传递一些参数:

http://localhost:8080/Refund/home.seam?user=012012&name=john&auth_level=4

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

请任何人都可以给一些技巧来做到这一点?或其他解决方案?

谢谢!!!!!

4

2 回答 2

2

You can always execute a custom action (es. execute="#{redirectAction.go}") and manually redirect users. In seam way:

 Redirect redirect = Redirect.getInstance();
 redirect.setViewId("...")

In standard way:

FacesContext.getCurrentInstance().getExternalContext().redirect("...");
于 2012-04-24T10:37:42.183 回答
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。

于 2012-04-26T08:19:42.733 回答