如果我将输入组件放在数据表之外,那么使用输入更新辅助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>
这是为什么?有没有办法让后者的设置工作?
答案 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。