【问题标题】:Bean input not being populated by jax-rsjax-rs 未填充 Bean 输入
【发布时间】:2017-04-29 04:19:06
【问题描述】:

我有以下 jax-rs 资源,

@Path("admin/user")
@Api(value = "Administration - User")
@Produces(MediaType.APPLICATION_JSON)
public class UserResource {

    @POST
    @Consumes(MediaType.APPLICATION_JSON)
    public void createUser(@BeanParam User user) {
       // ....
    }
}

我的用户bean定义如下,

public class User {
    @FormParam("firstName")
    private String firstName;

    @FormParam("lastName")
    private String lastName;
}

当我发出 REST 请求以创建一个请求主体为 json 的用户时,确实会创建用户对象,但未填充字段。我能够验证请求正文确实包含传递的 json。

我正在使用 Wildfly 8.2.0。

我的 Maven 依赖项包括,

    <dependency>
        <groupId>com.fasterxml.jackson.jaxrs</groupId>
        <artifactId>jackson-jaxrs-json-provider</artifactId>
        <version>2.7.4</version>
    </dependency>

    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jackson2-provider</artifactId>
        <version>3.0.10.Final</version>
        <scope>provided</scope>
    </dependency>

我错过了什么?

编辑 - 1

当我从 servlet 请求中手动读取 json 主体并通过对象映射器运行它时,它似乎工作得很好,

    ObjectMapper objectMapper = new ObjectMapper();

    final User user = objectMapper.readValue(json, User.class);

【问题讨论】:

    标签: java json jackson jax-rs wildfly


    【解决方案1】:

    去掉@BeanParam@FormParam。这些不用于 JSON 正文。并且没有注释的参数就足以让它工作。

    【讨论】:

      猜你喜欢
      • 2015-02-07
      • 1970-01-01
      • 1970-01-01
      • 2015-05-05
      • 1970-01-01
      • 1970-01-01
      • 2016-08-20
      • 1970-01-01
      • 2013-03-05
      相关资源
      最近更新 更多