json - 验证异常映射器不返回 JSON 格式

标签 json validation jersey jax-rs moxy

我使用 Jersey 2.5.1 作为 jax-rs 实现,我使用 Moxy 作为 JSON 序列化程序。我将 Jersey 配置为将验证错误打印到 web.xml 中的输出。

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

这工作正常,因为验证错误以纯文本(文本/纯文本)形式返回。问题是我想以 JSON 格式并根据 Jersey documentation 获取验证错误消息为此,必须为此配置一个 JSON 提供程序。据我所知,当 Moxy 的依赖项附加到类路径时,它被配置为 JSON 提供程序。不幸的是,我的验证错误没有以 JSON (application/json) 格式返回。什么可能是错的。我必须配置额外的位吗?

附言
当我调试 ValidationExceptionMapper 以下代码时,返回媒体类型为 text/plain 的 Variant 对象
if (property != null && Boolean.valueOf(property.toString())) {
            final List<Variant> variants = Variant.mediaTypes(
                    MediaType.TEXT_PLAIN_TYPE,
                    MediaType.TEXT_HTML_TYPE,
                    MediaType.APPLICATION_XML_TYPE,
                    MediaType.APPLICATION_JSON_TYPE).build();
            final Variant variant = request.get().selectVariant(variants);
            if (variant != null) {
                response.type(variant.getMediaType());
            } else {

                // default media type which will be used only when none media type from {@value variants} is in accept
                // header of original request.
                // could be settable by configuration property.
                response.type(MediaType.TEXT_PLAIN_TYPE);
            }
            response.entity(
                    new GenericEntity<List<ValidationError>>(
                            ValidationHelper.constraintViolationToValidationErrors(cve),
                            new GenericType<List<ValidationError>>() {}.getType()
                    )
            );
        }

最佳答案

正如我在评论中提到的,不返回 JSON 格式的原因是因为我正在发送 header :

接受: */*

它必须设置为:

接受:应用程序/json

才能正常工作。

关于json - 验证异常映射器不返回 JSON 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20960685/

相关文章:

javascript - JS 在单击提交时验证表单

java - 通过 Jersey 和 x-www-form-urlencoded 发送文件

validation - 如何分割训练和测试数据 - Tensorflow 上的 Keras

java - 您使用什么来验证 XML 模式?

ios:Socket.io 中的 Json

php - 无法将 Magento 对象数组响应转换为 json 格式

json - JAX-RS Jersey JSON 使用注释保留 null

java - 如何使用 Jersey REST 处理服务不可用的场景

javascript - 如何根据 PHP 中的 json 结果在 Javascript 中制作 IF 语句

javascript - JavaScript 中是否可以自动声明数千个变量?