1

LazyLoading Datatable でこのようなものを設定したいのですが、以下のコードを使用できません。

<p:dataTable var="studyPlanList" value="#{editBean.lazyModel}"
                paginator="true" rows="10"
                paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}"
                rowsPerPageTemplate="5,10,15" selectionMode="single"
                selection="#{editBean.selectedStudyPlan}"
                id="studyPlanTable">
            <p:ajax event="rowSelect" listener="#{editBean.onRowSelect}" update=":studyPlanEditForm:display"  >
            </p:ajax> 
            <p:column headerText="StudyPlan" sortBy="#{studyPlanList.name}" filterBy="#{studyPlanList.name}">
            <h:outputText value="#{studyPlanList.name}"/>
            </p:column>
        </p:dataTable>

p:column の代わりに、 h:link である場合は機能しています。同様の結果を達成したい;助けてください。

4

1 に答える 1

1

これは、次の facelet タグのドキュメントからのものですf:setPropertyActionListener

最も近い親 UIComponent カスタム アクションに関連付けられた UIComponent に ActionListener インスタンスを登録します。

したがって、それを機能させるにはトリガーアクションが必要です。これはh:commandButtonまたはの可能性がありh:commandLinkます。簡単な例を次に示します。

<h:commandButton action="#{editBean.submitAction}" value="Select">
    <f:setPropertyActionListener target="#{editBean.name}" 
                                 value="#{studyPlanList.name}" />
</h:commandButton>

Primefaces を使用しているため、 の行選択機能を確認できますp:dataTable。ショーケースの例を次に示します。

アップデート:

選択のタイプは、行要素のタイプと同じである必要があります。あなたのコードからそれはわかりますselection="#{editBean.selectedStudyPlan.name}"が、そうあるべきです

selection="#{editBean.selectedStudyPlan}"
于 2012-04-27T06:03:00.680 に答える