控制台上未显示 Quarkus 休眠验证异常
Quarkus hibernate validations exceptions not showing on the console
我有一个使用 Quarkus 1.4.2 的简单项目。当我使用 @Valid 注释时,验证失败并显示状态 500,异常不会显示在控制台上。仅在SwaggerUI。我应该怎么做才能在控制台上打印出来?
@ApplicationScoped
public class ProductService {
public void validateProduct(@Valid Product product) {
}
}
发生的异常是:
javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint
错误正确。它只是没有显示在控制台上。
如果我理解正确,你需要使用 Validator
对象来捕获可能的异常:
@Inject
Validator validator;
public void validateProduct(Product product) {
// Should throw an error
Set<ConstraintViolation<Product>> violations = validator.validate(product);
if(violations.isEmpty()) {
return;
}
for (ConstraintViolation<Product> violation : violations) { // or log whole set as json
System.out.println(violation.toString()); //TODO prettify
}
throw new ValidationException(JsonbBuilder.create().toJson(violations));
}
如果您收到 500 错误,您现在可以捕获并记录。
或者在您调用服务的地方接听 UnexpectedTypeException
。这可能会更好。
我希望记录错误,因为这绝对是一个可用性问题。我希望它在我们收集 Hibernate Validator 元数据时在启动时记录,而不是在每次调用时记录。
您可以创建一个复制器并在 Quarkus 跟踪器 here 中打开一个 GitHub 问题 here。
我会检查一下,看看是否需要修复。
我有一个使用 Quarkus 1.4.2 的简单项目。当我使用 @Valid 注释时,验证失败并显示状态 500,异常不会显示在控制台上。仅在SwaggerUI。我应该怎么做才能在控制台上打印出来?
@ApplicationScoped
public class ProductService {
public void validateProduct(@Valid Product product) {
}
}
发生的异常是:
javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint
错误正确。它只是没有显示在控制台上。
如果我理解正确,你需要使用 Validator
对象来捕获可能的异常:
@Inject
Validator validator;
public void validateProduct(Product product) {
// Should throw an error
Set<ConstraintViolation<Product>> violations = validator.validate(product);
if(violations.isEmpty()) {
return;
}
for (ConstraintViolation<Product> violation : violations) { // or log whole set as json
System.out.println(violation.toString()); //TODO prettify
}
throw new ValidationException(JsonbBuilder.create().toJson(violations));
}
如果您收到 500 错误,您现在可以捕获并记录。
或者在您调用服务的地方接听 UnexpectedTypeException
。这可能会更好。
我希望记录错误,因为这绝对是一个可用性问题。我希望它在我们收集 Hibernate Validator 元数据时在启动时记录,而不是在每次调用时记录。
您可以创建一个复制器并在 Quarkus 跟踪器 here 中打开一个 GitHub 问题 here。
我会检查一下,看看是否需要修复。