【发布时间】:2014-12-04 03:25:15
【问题描述】:
我有一个具有嵌套值的复杂对象,如下所示:
case class Gateway(RouteConfig: RouteConfig, gwType: Boolean, smmpp: Option[ConfigSMPP], modem: Option[ConfigModem])
每个对象在 smmpp 或调制解调器成员中都有值。然后在我的嵌套对象中,我有一个列表成员。我根据 Play 文档一步一步写了一个表单映射。
val gatewayForm: Form[SmsGateway] = Form(
mapping(
"smsRouteConfig" -> mapping(
"oracleId" -> optional(longNumber),
"smsType" -> optional(seq(text)),
)(RouteConfig.apply)(RouteConfig.unapply),
"gwType" -> boolean,
"smmpp" -> optional(mapping(
"nodeId" -> optional(text),
"systemType" -> optional(text),
)(ConfigSMPP.apply)(ConfigSMPP.unapply)),
"modem" -> optional(mapping(
"nodeId" -> optional(text),
"mdType" -> optional(text),
)(ConfigModem.apply)(ConfigModem.unapply))
)(SmsGateway.apply)(SmsGateway.unapply)
)
但现在我有一些问题:
1) 如果调制解调器或 smpp 形式具有值或取决于 gwType 布尔值(0-smpp, 1-modem),则必须显示它们。我不知道该怎么做。
2) 嵌套序列必须以单个字符串格式显示,而不是重复的输入框。例如,如果我在 seq 中有 3 个值的 smsType - 我应该看到一个由空格或逗号分隔的具有 3 个值的文本框,并且在从文本框中提交值后,它们必须再次转换为 seq。 我希望有人能告诉我该怎么做,或者帮助我理解如果我的愿望不真实,我应该怎么做。对不起我的英语不好。
【问题讨论】:
标签: scala playframework-2.0 mapping