gpt4 book ai didi

java - 具有复杂对象的@Repeat Form Helper - Play Framework

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

根据我的模型中的数据,我无法设置具有选定值的重复字段。

目前我的用户模型中有:

@Required
public String username;

@ManyToMany
public List<Stay> places;

还有我的 Stay 模型:

@Required
@ManyToOne
public Place place;

@Required
@Formats.DateTime(pattern="yyyy-MM-dd")
public Date startDate;

@Required
@Formats.DateTime(pattern="yyyy-MM-dd")
public Date endDate;

我的 Scala View 表单:

    @(formUser: Form[User])
...
@repeat(formUser("places"), min = 1) { stayField =>
<div id="groupLocationField">
// Don't manage to reach User->Places->Place
@select(formUser("stayField.places"), options(Place.optionsTitle))
@inputDate(formUser("stayField.startDate"))
@inputDate(formUser("stayField.endDate"))
</div>
}

stayField 是一个 Form.Field 类型,其中包含Field(null,places[1],ArrayBuffer(),None,ArrayBuffer(),Some(Paris Mon Oct 29 00:00:00 CET 2018 Wed Jun 11 Wed 00:00:00 CEST 2014 null))

但似乎已将我的地点和日期转换为字符串。 @stayField 包含我的 Stay 模型 toString 方法的值。

@stayField.value = Paris Mon Oct 29 00:00:00 CET 2018 Wed Jun 11 00:00:00 CEST 2014
@stayField.value.productArity = 1

最佳答案

找到解决方案:

 @repeat(formUser("places"), min = 1) { stayField =>
<div id="groupLocationField">
@select(formUser(stayField.name.toString + ".place"), options(Place.optionsTitle))
@inputDate(formUser(stayField.name.toString + ".startDate"))
@inputDate(formUser(stayField.name.toString + ".endDate"))
</div>
}

stayField.name 将显示 places[1]、places[2] 等...

请注意,我必须使用 Place.optionsTitle 而不是我在其他 @select 字段中使用的经典 Place.options。

    public static Map<String,String> optionsTitle() {
LinkedHashMap<String,String> options = new LinkedHashMap<String,String>();
for(Place c: Place.find.orderBy("title desc").findList()) {
options.put(c.title, c.title);
}
return options;
}
public static Map<String,String> options() {
LinkedHashMap<String,String> options = new LinkedHashMap<String,String>();
for(Place c: Place.find.orderBy("title desc").findList()) {
options.put(c.id.toString(), c.title);
}
return options;
}

编辑:事实上我不必使用特定方法 optionsTitle(),我忘记在我的选择中指定地点 ID:

@select(formUser(stayField.name.toString + ".place"), options(Place.optionsTitle))

应该变成:

@select(formUser(stayField.name.toString + ".place.id"), options(Place.options))

关于java - 具有复杂对象的@Repeat Form Helper - Play Framework,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23043069/

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