gpt4 book ai didi

jsf - 删除 PrimeFaces 数据表中的行

转载 作者:行者123 更新时间:2023-12-04 14:46:41 25 4
gpt4 key购买 nike

我正在使用 PrimeFaces 3.5 并且我正在实现 DataTable - ContextMenu成分。
但是,我想通过单击行中的一个单元格来删除一行。

我的 JSF 页面:

<h:form id="form">

<p:growl id="messages" showDetail="true" />

<p:contextMenu for="productID" widgetVar="cMenu">
<p:menuitem value="Edit Cell" icon="ui-icon-search"
onclick="productService.showCellEditor();return false;" />
<p:menuitem value="Delete Row" icon="ui-icon-search"
onclick="productService.delete();return false;" />
</p:contextMenu>

<p:dataTable id="productID" var="product"
value="#{productService.getListOrderedByDate()}"
editable="true" editMode="cell" widgetVar="productTable"
paginator="true" rows="10"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
rowsPerPageTemplate="5,10,15">

<f:facet name="header"> Airbnb Product </f:facet>

<p:ajax event="cellEdit"
listener="#{productService.onCellEdit}"
update=":form:messages" />

<p:column headerText="id" style="width:15%">
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{product.id}" />
</f:facet>
<f:facet name="input">
<p:inputText value="#{product.id}" style="width:96%" />
</f:facet>
</p:cellEditor>
...
</p:column>
</p:dataTable>
</h:form>

我已经在我的服务中实现了一个应该可以工作的删除方法。但是,当我按下上下文菜单中的删除按钮时,没有任何 react 。问题的原因可能是什么?

更新

我在 PF 页面上这样做了:
public void delete() {
log.info("Deleting data:");
log.info(selectedRow.getId());
// productDAO.delete(selectedRow);

}

和我的数据表:
                <p:contextMenu for="productID" widgetVar="cMenu">
<p:menuitem value="Edit Cell" icon="ui-icon-search"
onclick="productService.showCellEditor();return false;" />
<p:menuitem value="Delete" update="productID" icon="ui-icon-close"
actionListener="#{productService.delete}" />
</p:contextMenu>

<p:dataTable id="productID" var="product"
value="#{productService.getListOrderedByDate()}"
editable="true" editMode="cell" widgetVar="productTable"
paginator="true" rows="10"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
rowsPerPageTemplate="5,10,15"
selection="#{productService.selectedRow}" selectionMode="single" rowKey="#{product.id}">

但是,当我想从选定的行中获取 ID 时,我会得到一个 NullPointerException .我真的很感谢你的回答!!

最佳答案

这是使用上下文菜单删除行的一种方法...

<p:menuitem value="Delete" update="productID" icon="ui-icon-close" action="#{productService.delete}"/>  

添加到您的表:
<p:dataTable selection="#{productService.selectedRow}" selectionMode="single"....

在你的 bean 里
public void delete() {  
carsSmall.remove(selectedRow);
}

//declare selectedRow variable + getter/setter

从 primefaces 展示中取出: DataTable - ContextMenu

关于jsf - 删除 PrimeFaces 数据表中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16146454/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com