gpt4 book ai didi

jsf - 素面行编辑中的 event.getObject() 将旧值发送到 bean

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

我正在尝试使用素面的功能,该功能允许用户编辑表本身中的行数据。我已按照此链接来实现它:

http://www.primefaces.org/showcase/ui/datatableRowEditing.jsf

当我说编辑用户时,输入的新值不会发送到 bean。它仍然只显示旧值。

我在 JSF 中的代码:

<p:dataTable value="#{mybean.userList}"
var="item"
id="dataTab"
widgetVar="usersTable"
tableStyleClass="data" paginator="true" rows="5"
filteredValue="#{userController.filteredUsers}"
editable="true"
rowKey="#{item}">

<p:ajax event="rowEdit" listener="#{mybean.onEdit}" update=":userForm:growl" />
<p:ajax event="rowEditCancel" listener="#{mybean.onCancel}" update=":userForm:growl" />
<f:facet name="header">
<p:outputPanel>
<h:outputText value="Search all fields:" />
<p:inputText id="globalFilter" onkeyup="('usersTable').filter()" style="width:150px" />
</p:outputPanel>
</f:facet>


<p:column sortBy="#{item.firstName}" filterBy="#{item.firstName}"
filterMatchMode="startsWith">
<p:cellEditor>
<f:facet name="header">
<h:outputText value="First Name" />
</f:facet>
<f:facet name="output">
<h:outputText value="#{item.firstName}" />
</f:facet>
<f:facet name="input">
<p:inputText value="#{item.firstName}" style="width:100%"/>
</f:facet>
</p:cellEditor>
</p:column>
<p:column sortBy="#{item.lastName}" filterBy="#{item.lastName}" filterMatchMode="startsWith">
<p:cellEditor>
<f:facet name="header">
<h:outputText value="Last Name" />
</f:facet>

<p:column headerText="Update" style="width:6%">
<p:rowEditor />
</p:column>


</p:dataTable>

我在bean中的代码:
public String onEdit(RowEditEvent event) {
User user=(User)event.getObject());
user.getFirstName();
}

用于在 ui 中获取列表的 bean 中的代码:
 public List<UserBean> getUsersList(){
List<UserBean> retval = new ArrayList<>();
for (Object[] tuple : myFacade.getUserList()) {
UserBean ub = new UserBean();
ub.setFirstName((String) tuple[0]);
ub.setLastName((String)tuple[1]);
ub.setEmailAddress((String)tuple[2]);
ub.setOfficeNumber((String)tuple[3]);
ub.setRole((String)tuple[4]);
retval.add(ub);
}
return retval;
}

我已经尝试了一些帖子中给出的建议,但它们没有奏效。谁能告诉我如何获得新值。我正在使用 glassfish 4.0,primefaces 3.5。

最佳答案

我能够找出问题..每次当我在getter方法中获取列表时,我都会调用数据库来加载数据..但是只有当列表为空时才应该这样做。以下代码为您提供清晰的图片:

public List<UserBean> getUsersList(){


if(retval == null)
{
retval = new ArrayList<>();

for (Object[] tuple : myFacade.getUserList()) {
UserBean ub = new UserBean();
ub.setFirstName((String) tuple[0]);
ub.setLastName((String)tuple[1]);
ub.setEmailAddress((String)tuple[2]);
ub.setOfficeNumber((String)tuple[3]);
ub.setRole((String)tuple[4]);

retval.add(ub);
}
}
return retval;
}

所以 getUsersList 是我在 p:datatable 中的 var 值,现在当我调用 onEdit 时,它将检查列表是否为空,它执行数据库调用或不调用数据库。

关于jsf - 素面行编辑中的 event.getObject() 将旧值发送到 bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19143401/

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