带有对象列表的 Grails 自定义验证
Posted
技术标签:
【中文标题】带有对象列表的 Grails 自定义验证【英文标题】:Grails Custom Validation with List of objects 【发布时间】:2018-11-24 18:54:55 【问题描述】:我已经对 MultipartFile 进行了自定义验证。
class ImageCommand implements Validateable
MultipartFile imageFile
static constraints =
imageFile validator: val, obj ->
if ( val == null )
return false
if ( val.empty )
return false
['jpeg', 'jpg', 'png'].any extension ->
val.originalFilename?.toLowerCase()?.endsWith(extension)
但我现在需要多个文件,我想更改自定义验证以获取列表并应用约束。
<input type="file" id="imageFile1" name="imageFile">
to
<input type="file" id="imageFile1" name="imageFiles">
<input type="file" id="imageFile2" name="imageFiles">
知道如何在自定义验证中使用集合吗???
【问题讨论】:
【参考方案1】:如果输入名称相同,您将获得List<MultipartFile> imageFiles
。
所以你必须调整你的验证器以使用列表:
static constraints =
imageFiles validator: val, obj ->
val && val.every imgFile ->
if ( imgFile == null )
return false
if ( imgFile.empty )
return false
['jpeg', 'jpg', 'png'].any extension ->
imgFile.originalFilename?.toLowerCase()?.endsWith(extension)
【讨论】:
通过将物理 1 imageFile 声明更改为该 bean 中的列表List<MultipartFile> imageFile=[]
。由于您的 gsp 正在发送多个相同的项目,但您在验证 bean 中收到了 1 个图像以上是关于带有对象列表的 Grails 自定义验证的主要内容,如果未能解决你的问题,请参考以下文章
Grails:Spring Security Core 自定义身份验证 getUserByUserName 返回 null 对象
Grails spring security如何在自定义身份验证中记住我?
Grails:如何使用命令对象验证由项目列表组成的 POST 正文?