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:commandButtonh: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 回答