validation - 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 的方法来执行此操作,当我添加/删除属性时,我不必更改验证逻辑。
解决方案
推荐阅读
- java - 启动服务器后每 9 小时安排一次 cron 作业(如果服务器在下午 2:15 开始,下一个任务应该在晚上 11:15 发生)
- excel - VBA 从 excel 导出以访问添加新记录或更新现有记录
- pine-script - 如何将以下较高的高点和较低的低点绘图形状与 pinescript 中的 RSI 线对齐?
- c# - UiPath Activity Creator - 包版本未更改
- azure-cognitive-services - Azure 认知服务 - 人脸 API - 如何比较两个 persistedFaceId?
- diode - 如何计算此二极管中的电位表达式?
- jquery - jQuery ajax then 函数有 status=403, statusText = "error"
- google-data-studio - 返回当前日历月中总天数的简单 COUNT
- statistics - Mathematica 的 KarhunenLoeveExpansion 输出存在问题
- powershell - (xyz) | 在 PowerShell vcenterevent vs aduser 中选择 propertyA vs (xyz).propertyA