1

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 ファイルでこれを行う方法がわかりません。

誰でもこれを行うためのトリックを教えてください。または別の解決策?

ありがとう!!!!!

4

2 に答える 2

2

いつでもカスタムアクション(例:execute = "#{redirectAction.go}")を実行し、ユーザーを手動でリダイレクトできます。縫い目で:

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

標準的な方法で:

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 に答える