jsf - 删除方法后更新 p:dataTable 的方法?
问题描述
我正在寻找运行删除方法后更新 p:dataTable 的方法。在我的情况下,用户应该首先使用参数化搜索填充 p:dataTable。表包含可以使用删除方法取消的行。这并不意味着它们被完全删除,删除方法只是更改 db 表中的某些列。例如,将 hasCancellationReference 列更改为 true。现在这意味着我需要表格仍然显示在 dataTable 行上,只是状态发生了变化。现在我正在寻找删除方法后实现数据表刷新的正确方法。
我的数据表和删除按钮:
<h:form prependId="false" rendered="#{myController.lst ne null and myController.lst.size() gt 0}" id="dataTable">
<p:dataTable value="#{myController.lzy}" lazy="true" var="tra" rows="10" paginator="true" id="dtas"
selectionMode="single" selection="#{myController.cur}" rowKey="#{tra.transactionId}"
paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink} {NextPageLink} {LastPageLink}"
paginatorPosition="top"
rowsPerPageTemplate="10,25,50">
<p:ajax event="rowSelect" listener="#{myController.receipt}" update="#{parent}:tradlg" process="@this" global="false" oncomplete="PF('tradlg').show()"/>
<p:ajax event="page" update=""/>
<p:column headerText="Timestamp" width="30">
<h:outputText value="#{path.toGet.myTimeVariable}">
<f:convertDateTime pattern="dd.MM.yyyy HH:mm:ss" timeZone="EET"/>
</h:outputText>
</p:column>
<p:column headerText="Line" width="10">
<h:outputText value="#{var.lineCode}"/>
</p:column>
<p:column headerText="Stop" width="60">
<h:outputText value="#{var.stopCode} #{var.stopName}" />
</p:column>
<p:column headerText="Vechicle" width="30">
<h:outputText value="#{var.vehicleNumber}"/>
</p:column>
<p:column headerText="Status" width="40">
<h:outputText value="Deleted" style="color: red" rendered="#{var.hasCancellationReference eq true}"/>
<p:commandButton value="Delete"
action="#{emvController.deleteTransaction(tra.transitAccount, tra.transactionId)}"
rendered="#{tra.hasCancellationReference eq false}"/>
</p:column>
</p:dataTable>
</h:form>
我尝试过的事情:
在后端代码的 delete 方法中运行 search 方法:
public void deleteRow(int var, String varId) { try { MyParameterClass.getInstance().deleteRow(var, varId); message = MyParameterClass.getInstance().getMessage(); if (message.equals("success 200")) { successMsg(); //If delete was succesfull run searchMethod searchMethod(); } else { errorMsg(); System.out.println("Faces Message Controller: " + message); } } catch (Exception ex) { Logger.getLogger(EmvController.class).error(ex); return; }
}
删除方法后在页面上进行普通刷新。这确实有效,但我怀疑会导致我计划在未来实施的新功能出现问题。
解决方案
推荐阅读
- solidity - 在 ERC721/1155 中更改元数据参数的方法是什么?
- apache-spark - Spark(大型数据集)groupBy,排序,然后映射
- java - 如何使用 Java Spring MongoOperations 执行 mongodb 集合方法?
- facebook-graph-api - API graph instagram 获取 AdCreatives,没有关于 Effective_instagram_story_id 的信息
- django - Django 主从数据同步
- sql - 如何在 case 语句结果中使用 where 子句
- azure-devops - 创建发布管道以同步生产存储库
- scala - 在 Scala 中,如何在不知道输出类型或完整类型参数的情况下调用适用于输入类型的多态函数?
- azure - Azure 数据工厂 - 大型依赖管道
- javascript - 用于列出 javascript 的 Json 字符串