我的Grails 2.2.3应用程序中有以下命令对象。
@Validateable
class PictureCommand {
MultipartFile picture
String notes
Boolean isDocument
static constraints = {
picture nullable: false, validator: { val ->
if (!val.contentType in ['image/jpeg', 'image/png', 'image/pjpeg', 'image/gif','image/bmp'])
return 'fileType.invalid'
}
notes nullable: true
isDocument nullable: true
}
}
这允许上传图片文件,并确保它在有效类型列表中。但问题是,我可以上传不在该列表中的文件。当我致电cmd.validate()
时,我得到true
,然后拨打cmd.hasErrors()
并获取false
。我已经尝试返回字符串'fileType.invalid'
和列表['fileType.invalid']
,但都不起作用。有没有人有任何想法?感谢。
答案 0 :(得分:2)
您需要一些括号才能获得正确的运营商订单:
if (!(val.contentType in ['image/jpeg', 'image/png', 'image/pjpeg', 'image/gif','image/bmp']))
目前它首先评估!val
,如果它不为空或空白,则总是如此。