带有对象列表的 Grails 自定义验证

Grails Custom Validation with List of objects

我已经对 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">

知道如何在自定义验证中使用集合吗???

如果输入名称相同,您将得到 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)
            }
        }
    }
}