2012-08-06 60 views
2

如果我把一个输入组件放在数据表的外面,那么使用输入更新辅助bean,并且搜索工作得很好,在数据表中正确显示结果。在PrimeFaces数据表头中输入不会更新辅助bean - 解决方案?

<h:form> 
<!-- ------- Calendar input component outside dataTable ------- --> 
    <p:calendar id="selectHireDate" value="#{backingBean.hireDateToSearch}" /> 

    <p:dataTable id="employeeDataTable" 
     value="#{backingBean.employeeDataModel}" var="employee"> 
     <p:columnGroup type="header"> 
      <p:row> 
       <p:column>       
         <f:facet name="header"> 
          Lorem Ipsum 
         </f:facet>       
       </p:column> 
      </p:row> 
     </p:columnGroup> 

     <p:column> 
      <h:outputText value="#{employee.hireDate}" /> 
     </p:column>  
    </p:dataTable> 

    <p:commandButton value="Submit" 
    actionListener="#{backingBean.searchEmployees}" 
    update="employeeDataTable" /> 
</h:form> 

但是,如果我将该输入组件放在数据表的标题中,则突然间支持bean不再更新。 (我放在backingBean.setHireDateToSearch断点其中得到由上面的代码绊倒,但不是下面的代码。)

<h:form>    
    <p:dataTable id="employeeDataTable" 
     value="#{backingBean.employeeDataModel}" var="employee"> 
     <p:columnGroup type="header"> 
      <p:row> 
       <p:column>       
         <f:facet name="header"> 
<!-- ------- Calendar input component inside dataTable ------- --> 
          <p:calendar id="selectHireDate" value="#{backingBean.hireDateToSearch}" /> 
         </f:facet>       
       </p:column> 
      </p:row> 
     </p:columnGroup> 

     <p:column> 
      <h:outputText value="#{employee.hireDate}" /> 
     </p:column>  
    </p:dataTable> 

    <p:commandButton value="Submit" 
    actionListener="#{backingBean.searchEmployees}" 
    update="employeeDataTable" /> 
</h:form> 

这是为什么?有没有办法让后者的设置工作?

回答

1

我可以重现您的问题,并得到解决,当我摆脱<p:columnGroup>围绕<f:facet name="header">它本身没有多大意义,在这个构造无论如何。

<p:dataTable id="employeeDataTable" value="#{backingBean.employeeDataModel}" var="employee"> 
    <f:facet name="header"> 
     <p:calendar id="selectHireDate" value="#{backingBean.hireDateToSearch}" /> 
    </f:facet>       
    <p:column> 
     <h:outputText value="#{employee.hireDate}" /> 
    </p:column>  
</p:dataTable> 

(这只能说明空<p:column>头的第二个微小的线,你可以只用一点点CSS隐藏)

不知道这是由设计或由错误的地方引起与<p:dataTable>关联的decode()方法。我想report它的PrimeFaces球员可以肯定。

+0

我想保留标题中的行,因为我的表将有两个标题行。我没有看到消除columnGroup并保留行的方法。你看到解决方案吗? – Kiwi 2012-08-06 19:31:22

+0

@Kiwi您是否找到解决此问题的解决方案? – Zak 2013-07-22 20:49:35

+0

我有一个类似的问题与p:selectBooleanCheckbox ...在这里描述:http://forum.primefaces.org/viewtopic.php?f=3&t=37163这些问题有关吗?错误? PS:我们使用PF 3.5.25。 @Balusc:你记得你报告了哪个bug吗? – Kawu 2014-04-01 17:52:19