gpt4 book ai didi

java - JSF - 使用 Primefaces RowEditEvent 时如何获取旧值和新值?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:21:42 26 4
gpt4 key购买 nike

我有一个包含 2 列(名称和描述)的数据表,当有人更新一行并单击触发 execBacking.update 方法的复选标记时,我想更新我的数据库。

在这个方法中,我通过转换 event.getObject() 获得了新值,但是我怎样才能同时获得旧值呢?该名称是我的主键,因此我需要旧值才能知道要更新数据库中的哪一行。

xhtml页面

  <p:ajax event="rowEdit" listener="#{execBacking.update}" update=":execForm:execMessages" /> 

<p:column headerText="Name">
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{exec.name}" />
</f:facet>
<f:facet name="input">
<h:inputText value="#{exec.name}" />
</f:facet>
</p:cellEditor>
</p:column>

<p:column headerText="Description">
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{exec.description}" />
</f:facet>
<f:facet name="input">
<h:inputText value="#{exec.description}" />
</f:facet>
</p:cellEditor>
</p:column>

<p:column headerText="Actions">
<p:rowEditor />
<p:commandLink styleClass="ui-icon ui-icon-trash" type="submit" actionListener="#{execBacking.delete}" update=":execForm:execMessages" >
<f:attribute name="execName" value="#{exec.name}" />
</p:commandLink>
</p:column>
</p:dataTable>

支持bean

public void update(RowEditEvent event) {

Dao dao = new Dao(ds);
Exec exec = (Exec) event.getObject();
System.out.println("name = "+exec.getName()); //New name
System.out.println("desc = "+exec.getDescription()); //New desc
try {
// If the new exec was updated successfully
if(dao.updateExec(accessBacking.getUsername(), null, exec.getName(), exec.getDescription())) {
FacesContext.getCurrentInstance().addMessage("growl", new FacesMessage(FacesMessage.SEVERITY_INFO, "Success", "Exec Updated Successfully!"));
} else {
FacesContext.getCurrentInstance().addMessage("messages", new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error", "Error Updating Exec!"));
}
} catch (Exception e) {
FacesContext.getCurrentInstance().addMessage("messages", new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error", e.getMessage()));
}
}

最佳答案

我建议不要name 作为您的主键,而是添加一个自动递增的 id 字段并将其作为您的主键,并且不要使用户可以编辑该字段。这保证您始终可以访问要更新的记录。

一般来说,按照您尝试的方式尝试修改数据库中的主键是一种不好的做法。

关于java - JSF - 使用 Primefaces RowEditEvent 时如何获取旧值和新值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19391155/

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