【问题标题】:Input in PrimeFaces datatable header does not update backing bean - solution?PrimeFaces 数据表头中的输入不更新支持 bean - 解决方案?
【发布时间】:2012-08-06 16:35:28
【问题描述】:

如果我将输入组件放置在数据表之外,那么支持 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>

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

【问题讨论】:

    标签: jsf jsf-2 primefaces


    【解决方案1】:

    我可以重现你的问题,当我去掉 &lt;f:facet name="header"&gt; 周围的 &lt;p:columnGroup&gt; 时,它就得到了解决,这本身在这个结构中没有多大意义。

    <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>
    

    (这只显示第二小行空的&lt;p:column&gt; 标题,你可以用一点 CSS 隐藏它)

    不确定这是由设计引起的,还是由与 &lt;p:dataTable&gt; 关联的 decode() 方法中某处的错误引起的。我会 report 给 PrimeFaces 的人确定。

    【讨论】:

    • 我想保留标题中的行,因为我的表将有两个标题行。我看不到消除 columnGroup 并保留行的方法。你看到解决方案了吗?
    • @Kiwi 你找到解决这个问题的办法了吗?
    • 我有一个与 p:selectBooleanCheckbox 类似的问题...在这里描述:forum.primefaces.org/viewtopic.php?f=3&t=37163 这些问题是否相关?漏洞? PS:我们使用的是 PF 3.5.25。 @Balusc:你还记得你报告了哪个错误吗?
    猜你喜欢
    • 2013-10-10
    • 2012-04-21
    • 2014-12-19
    • 1970-01-01
    • 2015-08-01
    • 2014-01-25
    • 2016-11-23
    • 1970-01-01
    • 2015-01-02
    相关资源
    最近更新 更多