我想在p:dataTable中创建一个命令链接列,这样我就可以从表中删除行 . 所以我把这个列添加到表中:

<p:column>
  <p:commandLink process="@form" update=":growl @form"  action="#{cityManagedBean.deleteCity(cityItem)}">
    <h:graphicImage library="images" name="icon/delete.png"/>
  </p:commandLink>
</p:column>

根据这些主题:How can I pass a parameter to a commandLink inside a data table?

CDI bean List in the data table is null on submit from JSF

我知道dataTable中使用的数据模型必须在post请求处理中保留 . 当我将支持bean的范围更改为会话范围时,一切正常 .

但我的问题是:

  • 为什么必须保留数据模型 . 我的意思是 JSF 生命周期中发生了什么,我需要保留dataTable的数据模型?

在dataTable教程部分的 primefaces 演示站点中

  • ,在dataTable中选择和使用POJO时不使用转换器 . 在引擎盖下发生了什么,使得不必将对象转换为字符串,反之亦然?

  • 如果可以将POJO从Facelets传递到没有转换器的辅助bean,为什么在使用selectOneMenu和SelectManyMenu组件时需要定义转换器?