0

JavaでHREF値を動的な値に置き換える方法

  <a href=\"http://www.example.com\"> with <a href=\ outcome \">

ここで、文字列結果 ="home\login.jsf"

4

3 に答える 3

1

さまざまな種類の結果が考えられます。プレーンな HTML または h:outputLink や h:link などのコンポーネントを使用している場合、EL 式は 100% 動的ではなく、ページのレンダリング中に解釈されます。

<h:link outcome="#{bean.link}" value="I go to a page!"/>

href で<a>指定されたリンクを持つタグになります。#{bean.link}

また、JSF 2.x では、Bean 属性を参照する if 句を追加することで、Defiend ルールで条件付きナビゲーションを使用できます。

<navigation-rule>
    <from-view-id>index.xhtml</from-view-id>
    <navigation-case>
        <from-outcome>logIn</from-outcome>
        <if>#{sessionBean.sessionActive}</if>
        <to-view-id>userDashboard.xhtml</to-view-id>
        <else if>#{sessionBean.rejectedUser}</else if>
            <to-view-id>index.xhtml</to-view-id>
        <else>
            <to-view-id>register.xhtml</to-view-id>
    </navigation-case>
</navigation-rule>

一方、h:commandButton や h:commandLink などの要素には、戻り値の型が String または void のメソッドを参照する action 属性があります。メソッドが文字列を返す場合、「#」またはナビゲーション ルール (暗黙的なナビゲーションまたは構成済みのルール) を返すことができます。

<h:commandLink value="Log In" action="#{bean.logIn}"/>

Bean から logIn メソッドが呼び出されます。

public String logIn() {
    //Your login logic
    if(userIsLoggedIn) {
        return "userDashboard"; //Implicit navigation
    } else {
        return "index"; //Implicit navigation
    }
}

暗黙的なナビゲーション (JSF 2.x) を使用すると、ページの名前を返すことで、同じフォルダー内のページ間を移動できます。たとえば、戻るindexと、ユーザーは に送信されindex.jsfます。

于 2012-07-31T17:59:36.567 に答える
1

EL (JSTL など) を使用して文字列をレンダリングする必要があります。

JSTL の例は次のとおりです。

<a href=#{outcome}> with <a href=\ outcome \">
于 2012-07-31T17:39:09.223 に答える
0

'a'タグを'h:commandLink'タグに置き換え、必要に応じて値とアクションをバインドします。

  <h:commandLink value="#{..}" action="#{yourBean.yourMethod()}"/>
于 2012-08-01T05:14:25.090 に答える