如何使用Datatable Lazy Loading为目标元素设置值

时间:2012-04-27 05:01:13

标签: jsf primefaces

我想在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:列,如果它是h:链接它正在工作,我想达到类似的结果;请帮助。

1 个答案:

答案 0 :(得分:1)

这来自f:setPropertyActionListener上的facelet代码文档:

  

在与之关联的UIComponent上注册ActionListener实例   最近的父UIComponent自定义操作

因此,您需要触发操作才能使其正常工作。这可以是h:commandButtonh:commandLink。这是一个简单的例子:

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

由于您使用的是Primefaces,因此您可以查看p:dataTable的行选择功能。这是一个example from the showcase

<强>更新

选择的类型应与row元素的类型相同。我从您的代码中看到selection="#{editBean.selectedStudyPlan.name}"但它应该是

selection="#{editBean.selectedStudyPlan}"