【发布时间】:2014-05-21 05:31:24
【问题描述】:
我有一个特定的场景,我只能在流程的稍后阶段手动检查违规条件。
我想要做的是抛出一个ConstraintViolationException,并为其提供一个“真实的”ConstraintViolation object(当我在堆栈中捕获异常时,我使用#{validatedValue} 和violation.getPropertyPath() 参数)。
如何在不让框架通过注释为我完成的情况下自己创建ConstraintViolation(我使用 Hibernate Validator)?
代码示例:
List<String> columnsListForSorting = new ArrayList<String>(service.getColumnsList(domain));
Collections.sort(columnsListForSorting);
String firstFieldToSortBy = this.getTranslatedFieldName(domain.getClass().getCanonicalName(), sortingInfo.getSortedColumn());
if (!columnsListForSorting.contains(firstFieldToSortBy)){
throw new ConstraintViolationException(<what here?...>);
}
谢谢。
【问题讨论】:
-
到目前为止你的测试代码是什么?
-
编辑您的问题,添加 sn-p 并使用“代码”按钮对其进行格式化,这样更易于阅读:)
-
谢谢,原问题已更新。
-
根据您的 sn-p,为什么不抛出并捕获自定义异常以更好地表达正在发生的事情
throw new MissingFilterField(firstFieldToSortBy)? -
由于堆栈向上,捕获了一个 ConstraintViolation 异常,该异常已将异常转换为客户的预期错误返回值。但我明白你在说什么。也许我应该创建一个新的异常处理场景。
标签: java validation bean-validation hibernate-validator