1

パラメータをajaxイベントに渡そうとしています。これは、私が意味することの例です:

<h:panelGrid id="pictures" columns="3">
    <c:forEach items="#{createProduct.pictures}" var="picture">
        <h:graphicImage value="#{picture.source}" />
        <h:inputText value="#{picture.alt}" />
        <p:commandButton value="Remove">
            <f:ajax execute="@form" 
                    listener="#{createProduct.removePicture(picture)}" 
                    render="@form" />
        </p:commandButton>
    </c:forEach>
</h:panelGrid>

ajaxリスナーを介してパラメーターを渡すことができないため、このコードが機能しないことはわかっています。これは私が達成しようとしていることの単なる例ですが。私は<f:param id="picture" value="#{picture}" />ajax タグで allong を使用しようとしましたが、ループしているため、コンポーネント ID form:picture が重複します。どの画像を削除するかを決定するために、メソッド内でこのパラメーターが必要です。これをajaxで解決するにはどうすればよいですか?

@ViewScoped CDI Bean を使用しています。

4

1 に答える 1

4

まず、タグに置き換えることをお勧めc:forEachします。ui:repeat第二に、Primefacesを使用しているので、そのすべての強みを使用する必要があります。したがって、commandButtonより簡単に書くことができます:

<p:commandButton value="Remove" process="@form" update="@form" action="#{createProduct.removePicture(picture)}"/>

以上です。複雑にしないでください。

ちなみに、primefacesはデフォルトでAJAXリクエストを送信します。タグcommandButtonは必要ありません(使用してはいけません) 。f:ajax

于 2013-02-14T19:54:47.197 に答える