Java验证约束:如何向客户端发送验证错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java验证约束:如何向客户端发送验证错误相关的知识,希望对你有一定的参考价值。

假设我有以下API:

@Path("/api")
public Response api(@Valid @NotNull(message = "In cannot be null") String in) {
    return Response.ok().build();
}

当客户端发送Null String时,他得到的唯一响应是:“Bad Request(400)”

如何使用上述消息发送响应?甚至在我的服务器中记录消息?

答案

您可以使用entity发送错误的特定消息。

Response.status(errorMessage.getStatus())
                    .entity(message)
                    .type(MediaType.APPLICATION_JSON)
                    .build();
另一答案

我看了下面的泽西植入后解决了这个问题:

https://github.com/jersey/jersey/blob/master/ext/bean-validation/src/main/java/org/glassfish/jersey/server/validation/internal/ValidationExceptionMapper.java

显然是jersey.config.beanValidation.enableOutputValidationErrorEntity.server

property必须设置为true(在web.xml中):

 <init-param>
        <param-name>jersey.config.beanValidation.enableOutputValidationErrorEntity.server</param-name>
        <param-value>true</param-value>
 </init-param>

以上是关于Java验证约束:如何向客户端发送验证错误的主要内容,如果未能解决你的问题,请参考以下文章

在摘要身份验证中,服务器如何知道它在之前的调用中向哪个客户端发送了哪个随机数?

如何在 JQuery 验证插件 addmethod() 中向服务器端发送异步 AJAX 调用

AXIS:验证邮件的安全性时发生错误

java Spring验证:如何向BindingResult添加错误

带有Java的SharePoint REST API - 身份验证错误

如何从 Java REST servlet 向 Angular 客户端发送注销消息?