PrimeFaces数据表头中的输入不会更新支持bean - 解决方案?

时间:2012-08-06 16:35:28

标签: jsf jsf-2 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 个答案:

答案 0 :(得分: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>

(这只会显示第二个空行decode()标题的小行,您可以通过一点CSS隐藏它)

不确定这是由设计引起的还是由与<p:dataTable>关联的{{1}}方法中的某个地方的错误引起的。我肯定会{Q}给PrimeFaces的人report