首页 > 解决方案 > Grails 3:验证至少 1 个字段的约束模式不为空

问题描述

我有一个通过搜索表单填充的命令对象,我想验证是否至少提交了 1 个字段。目前我正在控制器中进行验证并遍历所有属性。

class SearchCommand implements Validateable {
    List<String> termID;
    List<String> subject;
    List<String> title;
}

def getSearch(SearchCommand cmd) {
        boolean isFormEmpty = true;

        //make sure at least 1 property is filled out.
        SearchCommand.metaClass.properties.each{ MetaProperty prop ->
            if(prop.field && cmd[prop.name] && !cmd[prop.name].isEmpty()) {
                isFormEmpty = false;
            }
        }
}

所以这行得通,但我想知道是否有更好的方法来做到这一点。我希望将它内置到命令对象中,这样我就可以调用cmd.hasErrors(). 不确定是否有一种干净且非 hacky 的方法来执行此操作,当我添加/删除属性时,我不必更改验证逻辑。

标签: validationgrailsgroovy

解决方案


推荐阅读