0

以下が機能する理由:

<h:form id="form1">
<p:carousel id="carousel" value="#{galleriaBean.paths_tn}" var="img" itemStyle="width: 200px">
<p:graphicImage value="#{img}"/>
</p:carousel>

<p:commandLink id="here" value="click me" update="hello11" oncomplete="dlg.show()">
<f:setPropertyActionListener value="hello!!!" target="#{galleriaBean.selected}"/>
</p:commandLink>

<p:dialog widgetVar="dlg">
<h:outputText id="hello11" value="#{galleriaBean.selected}"/>
</p:dialog>
</h:form>

しかし、commandLinkをカルーセルに移動すると、機能しませんか?setPropertyActionListenerは、Beanに変数を設定することさえしません。

@RequestScopedCDIBean。

<p:carousel id="carousel" value="#{galleriaBean.paths_tn}" var="img" itemStyle="width: 200px">
<p:graphicImage value="#{img}"/>
<p:commandLink id="here" value="click me" update=":form1:hello11" oncomplete="dlg.show()">
<f:setPropertyActionListener value="#{img}" target="#{galleriaBean.selected}"/>
</p:commandLink>
</p:carousel>
4

1 に答える 1

2

コードの 2 番目のバージョンは表示されませんでしたが (p:commandLink内に配置した場合)、 の属性p:carousel内にバッキング Bean のプロパティを配置したと思います。AJAX リクエストもリクエストであることを認識する必要があるため、各 AJAX リクエストでスコープ Bean が再作成されるようにリクエストします。使用しているプロパティの状態を保持するには、Bean を少なくともビュー スコープにするか、何らかの方法でメソッドの状態を保持する必要があります。ビュー スコープ Bean を使用できる場合は、それを行う必要があります。valuep:commandLinkf:setPropertyActionListener@PostConstructor

于 2013-02-01T22:23:52.740 に答える