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

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

但是,如果我将该输入组件放置在数据表的 header 中,突然间支持 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>

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

最佳答案

我可以重现你的问题,当我摆脱 <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 隐藏它)

不确定这是由设计引起的还是由 decode() 中的某个错误引起的与 <p:dataTable> 关联的方法。我会 report PrimeFaces 人员可以确定。

关于jsf - PrimeFaces 数据表头中的输入不会更新支持 bean - 解决方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11832354/

相关文章:

JSF。转换 h :commandLink display 的值

javascript - 如何从 JSF 2.0 中的 javascript 获取元素

java - 我们可以通过编程方式配置 Chrome 吗?

jsf-2 - PrimeFaces 从延迟加载数据表中导出数据

jsf - 可编辑数据表 RowKey Null

jsf - 如何在实际 Web 应用程序之外使用 ViewMap 模拟 JSF FacesContext 以进行单元测试?

JSF 渲染弹出窗口出现 manegbean 情况?

java - 通过 p :ajax with PrimeFaces 3. 3.1 (JSF 2.0) 发送额外参数

java - 在 CDI 实现项目中包含空 beans.xml 的目的是什么?

jsf-2 - 素面 : how to get the value of a Filter column text