【问题标题】:Grails Custom Validation with List of objects带有对象列表的 Grails 自定义验证
【发布时间】:2023-03-11 20:52:01
【问题描述】:

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

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

【问题讨论】:

    标签: grails grails-orm custom-validators grails-validation grails-3.3


    【解决方案1】:

    如果输入名称相同,您将获得List&lt;MultipartFile&gt; 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&lt;MultipartFile&gt; imageFile=[]。由于您的 gsp 正在发送多个相同的项目,但您在验证 bean 中收到了 1 个图像
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-06
    • 1970-01-01
    • 2016-04-23
    • 2023-03-29
    • 1970-01-01
    • 2021-06-22
    相关资源
    最近更新 更多