2012-04-27 71 views
1

我想在LazyLoading Datatable中设置类似这样的内容,我无法使用下面的代码。如何使用Datatable设置目标元素的值LazyLoading

<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:链接它工作,我想实现类似的结果;请帮助。

+0

您好Matt Handy,已发布表代码。请检查。 – user1281029 2012-04-27 10:15:05

回答

1

这是从f:setPropertyActionListener的Facelet标记文档:

注册与 最接近父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行选择功能。这是一个example from the showcase

UPDATE:

类型的选择应该是一样的行元素的类型。我从您的代码看到selection="#{editBean.selectedStudyPlan.name}"但它应该是

selection="#{editBean.selectedStudyPlan}" 
+0

您好我试图给这样的,但我没有得到我的变量studyPlanList为null的值。请帮助。 \t \t \t – user1281029 2012-04-27 09:24:27

+0

如果使用showcase中描述的行选择功能,则不需要此事件侦听器(侦听器方法签名是错误的)。选定的行自动设置为您在'' – 2012-04-27 09:30:00

+0

'selection'属性中指定的字段。但是该对象在托管bean中反映为null,因为该行中显示的是实际值。 – user1281029 2012-04-27 09:44:13