0

p:dataListアイテムのリストを表示するPrimeFacesモバイルビューを開発しているため、使用しています。いずれかのアイテムをクリックするpm:viewと、同じビューの別のビューが表示されます。ただし、選択したアイテムについてBeanに通知する必要があります。

残念ながら、Beanを正常に更新する方法が見つかりませんでした<p:ajax>。dataTable内で次の例外がスローされます。

<p:ajax> Unable to attach <p:ajax> to non-ClientBehaviorHolder parent

反復要素内での使用<f:setPropertyActionListener>も、次の理由で失敗します。

<f:setPropertyActionListener> Parent is not of type ActionSource

これは私のコードです:

<pm:view  id="instrumentsView" >
    <pm:content >
        <h:form id="instrumentsList" >                            
            <p:dataList var="instrument" value="#{instrumentBean.subscribedInstruments}" >
                <h:outputLink value="#newView" >#{instrument.longName}</h:outputLink>
                <f:setPropertyActionListener value="#{instrument}" target="#{instrumentBean.selectedInstrument}" />
            </p:dataList>
        </h:form>
    </pm:content>
</pm:view>

明らかに、私が理解している限り、これらはPrimeFacesモバイルリストでの使用に最適化されたコンポーネントであるため、dataListとoutputLinkを使用しています。しかし、必要に応じて他のオプションを見つけることができます。

4

2 に答える 2

1

私はショーケースニュースというタイトルの例)で問題を処理する正しい方法を見つけました:

<p:dataList var="instrument" value="#{instrumentBean.subscribedInstruments}" >
    <p:column >
        <p:commandLink value="#{instrument.longName}" action="pm:newView" update=":compId">
            <f:setPropertyActionListener value="#{instrument}" target="#{instrumentBean.selectedInstrument}" />
        </p:commandLink>
    </p:column>
</p:dataList>
于 2013-01-28T21:57:57.683 に答える
1

これを説明するトピックがprimefacesのドキュメントにあります。

データの選択(124ページ)indexed_primefaces_users_guide_3_5.pdf http://www.primefaces.org/documentation.html

これが内容です

    <h:form id="carForm">
    <p:dataGrid var="car" value="#{carBean.cars}" columns="3" rows="12">
        <p:panel header="#{car.model}">
            <p:commandLink update=":carForm:display" oncomplete="dlg.show()">
                <f:setPropertyActionListener value="#{car}"
                    target="#{carBean.selectedCar}"
                    <h:outputText value="#{car.model}" />
            </p:commandLink>
        </p:panel>
    </p:dataGrid>
    <p:dialog modal="true" widgetVar="dlg">
        <h:panelGrid id="display" columns="2">
            <f:facet name="header">
                <p:graphicImage value="/images/cars/#{car.manufacturer}.jpg" />
            </f:facet>
            <h:outputText value="Model:" />
            <h:outputText value="#{carBean.selectedCar.year}" />

        </h:panelGrid>
    </p:dialog>
</h:form>
于 2013-07-31T00:28:58.590 に答える