我尝试使用System
的值填充表单 def edit(id: Long) = IsAuthenticated { username => implicit request =>
User.findByEmail(username).map { user =>
System.findById(id).map { system =>
Ok(html.systems.editForm(id, systemForm.fill(system), Person.options, user))
}.getOrElse(NotFound)
}.getOrElse(Forbidden)
}
但是某些'system'值是java.math.BigDecimal
val systemForm = Form(
mapping(
"id" -> ignored(NotAssigned:Pk[BigDecimal]),
"sys_name" -> nonEmptyText,
"sys_desc" -> nonEmptyText,
"sys_owner1_id" -> longNumber,
"sys_owner2_id" -> optional(longNumber)
)(System.apply)(System.unapply)
)
它说:
type mismatch; found : (anorm.Pk[java.math.BigDecimal], String, String, String, Option[String], java.math.BigDecimal, Option[java.math.BigDecimal]) => models.System required: (anorm.Pk[java.math.BigDecimal], String, String, Long, Option[Long]) => ?
我该如何处理?
答案 0 :(得分:0)
在anorm或附近的地方看起来像问题。
正如您在错误说明中看到的那样sys_owner1_id
和sys_owner2_id
在查询结果中为BigInteger
,但在表单中声明为long
。
我不熟悉anorm,但是解决方案是在anorm中声明这些id,或者在表单映射中将它们声明为BigInteger
或在您的BigInteger
转换为long
查询。