gpt4 book ai didi

java - p :dataList not updating

转载 作者:行者123 更新时间:2023-11-30 06:55:29 25 4
gpt4 key购买 nike

我有 p:datalist ,其中包含一组对象和 p:commandButton ,它应该向该集合添加一个对象。但无论我做什么,datalist 更新得太快,并且不包含新对象。但是,当我单击例如 2 次时,datalist 会刷新 2 次,第一次刷新后它不包含任何新元素,但在添加第二个第一个元素后。如何同步此更新?我尝试了 update="id"/"@all"、sync/async、ajax,但总是一样。

页面

        <m:form id="lastForm">
<p:commandButton id="addProject" action="#{userBacking.addProject}" value="myadd">
</p:commandButton>
<p:dataList id="mydatalist" value="#{userBacking.user.projects.toArray()}" var="project">
#{project.projectName}, #{project.id}
</p:dataList>
</m:form>

UserBacking 类

@Named
@RequestScoped
public class UserBacking {
private User user;

@Inject
private UserService userService;
(...)
public void addProject() {
userService.addProject(user);
}
}

用户服务

@Stateless
public class UserService extends BaseEntityService<Long, User> {
@PersistenceContext
private EntityManager entityManager;
(...)
public void addProject(User user) {
User existingUser = get(user);
Project proj = new Project();
proj.setProjectName("projectname");
proj.setUser(existingUser);
existingUser.addProjects(proj);
super.update(existingUser);
}
}

最佳答案

我想说,您需要在命令按钮中使用 actionListener 而不是 action (除了您的示例中缺少的 update 属性,尽管您说您正在使用它)。 action 在向服务器发出的正常 POST 同步请求期间占有一席之地。

此外,我项目中的一般做法是,当在某个页面中使用ajax处理时,我们使用@ViewScoped bean而不是RequestScoped bean。

关于java - p :dataList not updating,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41925082/

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