【问题标题】:Primefaces Data Table actionListener for inline cell editingPrimefaces 数据表 actionListener 用于内联单元格编辑
【发布时间】:2021-04-16 20:58:31
【问题描述】:

当用户单击数据表中的单元格时如何执行代码?类似于 p:commandButton 上的 listener 和 actionListener。

例如

<p:commandButton oncomplete="PF('editProductDialog').show()" 
   actionListener="#{bean.doStuffToGetASelectOneMenuReadyforTheEditProductDialog()}" />
public void doStuffToGetDialogReady() {
   //query databases to get select item list
}

只有当用户点击命令按钮时才会查询数据库

但是对于 p:dataTable 内联单元格编辑,我如何调用仅在单击数据表单元格进行编辑时查询数据库以获取选择项的代码?

<p:cellEditor>
    <f:facet name="output"/>
    <f:facet name="input">
        <p:selectOneMenu>
            <f:selectItems value="#{bean.someListSpecificToThisUser}" />
        </p:selectOneMenu>
    </f:facet>
</p:cellEditor>

我一直在@PostConstruct init() 方法中填充someListSpecificToThisUser selectItems 列表

@PostConstruct
public void init() {
     //code specific to the page and datatable
     someListSpecificToThisUser = service.queryValuesForUser(user);
}

但如果用户从不单击单元格来编辑 selectOneMenu 值,那么我会点击数据库并将列表无缘无故地存储在内存中。还是我不应该担心开销?

【问题讨论】:

    标签: jsf primefaces primefaces-datatable


    【解决方案1】:

    如果对p:dataTable 进行单元格编辑,您可以使用一些事件:

    Event Fired
    cellEdit When a cell is edited.
    cellEditCancel When a cell edit is cancelled e.g. with escape key
    cellEditInit When a cell edit begins.

    全部采用org.primefaces.event.CellEditEvent 作为监听器参数。

    当列表仍为null 时,您可以使用cellEditInit 方法填充列表。缺点是这需要在每次编辑初始化时调用 Ajax。

    另一个选择是将列表存储在 SessionScoped 用户 bean 中,这会消耗一些内存。

    选择的选项取决于列表的大小、获取列表所需的时间以及您期望的编辑次数。如果您不希望进行太多编辑,请使用 Ajax 侦听器来填充列表。如果列表很长并且需要一些时间来加载,我会切换到p:autoComplete 字段。

    另见:

    【讨论】:

    • 很好的答案,但是,无论编辑哪个单元格,都会调用 cellEditInit 事件,并且我在许多列上都有 cellEdit。我将坚持使用 db 查询并在视图 init/postconstruct 中加载。一段时间以来,这种方式一直运行良好,我的目标是提高应用效率和开销。
    • CellEditEvent 包含行索引和UIColumn,参见github.com/primefaces/primefaces/blob/master/src/main/java/org/…
    猜你喜欢
    • 1970-01-01
    • 2012-02-21
    • 2017-07-02
    • 2014-08-03
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 2012-03-23
    • 2013-08-22
    相关资源
    最近更新 更多