复制表单对象并添加新字段

时间:2013-08-21 12:57:13

标签: scala playframework-2.0

我有两个相同形式的版本,一个带有“username”字段,另一个没有,我在运行时根据配置选项选择其中一个。 Please have a look here
我希望我能写这个:

val formWithUsername = formWithoutUsername ++ Form[FullRegistrationInfo](mapping(UserName -> nonEmptyText))

有类似的东西吗?

1 个答案:

答案 0 :(得分:1)

我认为你不能这样做,但是尝试使UserName字段映射可选,这样当你不需要时它就不会妨碍你:

mapping(
  UserName -> optional(nonEmptyText.verifying(Messages(UserNameAlreadyTaken), userName => {
    UserService.find(IdentityId(userName, providerId)).isEmpty
  })),
  ...
)

由于案例类对应字段已经是可选的,因此不会有任何损害。

但是,Password映射对于这两种形式并不相同。所以你应该把它们全部保留下来,重构类似的部分。