1

上記の質問で述べたように、「動的」パラメーターを作成する必要があります

<ui:composition>
    <h:link>
        <h:outputText value="link with params" />
        <ui:repeat var="parameter" value="#{bean.getCurrentParameter}"> //customClass

            test: #{parameter.name} #{parameter.value} //output is fine

            <f:param name="#{parameter.name}" value="#{parameter.value}" />
        </ui:repeat>
    </h:link>
</ui:composition>

残念ながら、「テスト」はすべての値を正しく返しますが、リンクにカーソルを合わせると、単一のパラメーター セットがありません (「page.xhtml?param1=ddd¶m2=sss...」ではなく「page.xhtml」)。

なぜこれが必要なのかを理解するために、現在のページのすべてのパラメーターを取得して追加/削除したい (クリックしたリンクは、削除/追加したいものです)。

リンクごとに独自のパラメーターを生成する必要があります (デフォルトで param1=1,2 の場合、1 つのリンクには「param1=1,2,3」(3 を追加) があり、もう 1 つのリンクには「param1=1,2, 4" (4) を追加)

4

1 に答える 1

4

従来のタグハンドラとコンポーネント タグの問題。<ui:repeat/>はビュー ツリーが構築された後に実行されるコンポーネント タグであり、<f:param/>はビューの構築中にビュー ツリーに配置されるタグ ハンドラです。これが意味することは、ページに挿入さ<f:param/>れる前に解析および処理されるということです。<ui:repeat/>そのため、必要なvar="parameter"ときに使用できません<f:param/>

修正するには、<c:forEach/>代わりにタグを使用します:

<h:link>
   <h:outputText value="link with params" />
   <c:forEach var="parameter" items="#{bean.getCurrentParameter}">
       test: #{parameter.name} #{parameter.value}
        <f:param name="#{parameter.name}" value="#{parameter.value}" />
   </c:forEach>
</h:link>
于 2013-10-22T16:30:30.320 に答える