gpt4 book ai didi

java - 玩框架 FORM 绑定(bind)到 Set 而不是 List

转载 作者:搜寻专家 更新时间:2023-10-31 20:22:55 27 4
gpt4 key购买 nike

有什么方法可以正确绑定(bind)到表单上的 Set 吗?

我正在做 POJO 绑定(bind),我的 Controller 接受一个用户对象

public static void create(User user)

用户.java

public class User implements Serializable {



public Long id;

@Required
@Email
public String email;

public Set<Group> groups;

}

组.java

    public class Group implements Serializable {

public Long id;

public String name;

}

我似乎无法让我的字段绑定(bind)到组

我试过 user.groups[].id、user.groups[0].id、user.groups.id。我可以让它与列表一起工作,但是当它发布时,我得到一个 N 元素的列表,其中包含一堆空项(每个未选中的复选框都有一个空值),我可以创建一个没有空值的新列表但这似乎是错误的。

编辑:用户和组不是持久实体,Play 只是作为一个无状态且无持久性的 restful API 表示层

最佳答案

Play 1.2.4 的新 Binder 实现允许这样做。

在 1.2.4 之前的 Play 版本(2011 年 12 月 2 日发布)中,您无法通过发送如下参数来绑定(bind)集合

user.groups[1].id = 1
user.groups[1].name = "name1"
user.groups[3].id = 3
user.groups[3].name = "name3"
user.groups[4].id = 4
user.groups[4].name = "name4"

绑定(bind)到列表的问题是您将获得长度为 5 的列表,其中 0 和 2 处的值为空。

如果您仍然需要使用低于 1.2.4 的 Play 版本,解决此问题的方法是使用

Map<String, Group> groups

而不是集合或列表。这样你就不会在两者之间获得空元素,你将通过调用 groups.values() 获得 Collection。

关于java - 玩框架 FORM 绑定(bind)到 Set 而不是 List,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7653917/

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