域名看起来像
class EventDonation implements Serializable{
String title
String body
Integer customDonationMin
Integer customDonationMax
EntityStatus status
List denominations
static hasMany = [denominations: Integer]
}
请注意,面额是整数列表。现在在绑定期间
List<String> whiteList = ['title', 'body', 'customDonationMin', 'customDonationMax', 'denominations']
bindData(don, params, ['include': whiteList])
if(params.status){
don.status = EntityStatus.ACTIVE
}
else{
don.status = EntityStatus.INACTIVE
}
don.validate()
if(don.hasErrors()){
render(view: "editdonation", model: [id:id, donation:don])
return
}
显示以下错误
Message: java.lang.String cannot be cast to java.lang.Integer
在视图页面中有4个用于输入面额的文本框。我在想这些字符串,即&#39; 10&#39; 20&#39;,&#39; 30&#39;&#39; 40&#39;在绑定期间将自动转换为整数。我认为该错误与绑定此列表有关。我感谢任何帮助。谢谢!
有趣的是当我将列表类型更改为String时,如下所示:
class EventDonation implements Serializable{
String title
String body
Integer customDonationMin
Integer customDonationMax
EntityStatus status
List denominations
static hasMany = [denominations: String]
}
以下绑定工作正常,但不会引发错误。
List<String> whiteList = ['title', 'body', 'customDonationMin', 'customDonationMax', 'denominations']
bindData(don, params, ['include': whiteList])
if(params.status){
don.status = EntityStatus.ACTIVE
}
else{
don.status = EntityStatus.INACTIVE
}
don.validate()
if(don.hasErrors()){
render(view: "editdonation", model: [id:id, donation:don])
return
}
所以,我确信列表的Integer类型是问题的根源。由于面额是整数,我想不出任何其他类型。我很感激任何帮助。谢谢!