如何将javapojo/json发布到playframeworkv2.2.1控制器httppost方法

cygmwpex  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(500)

我正在使用java play框架编写一个api。我想通过postman这样的rest客户机发布json,同时测试play控制器。
java play=2.2.1版本
控制器方法:

public static Result submitDetails(DetailsVO detailsVO) throws Exception

路由配置

POST    /submit                     controllers.application.ProcessDetails.submitDetails(detailsVO:DetailsVO)

下面是我的pojo

import java.io.Serializable;
import java.util.List;

public class DetailsVO implements Serializable {
    public DetailsVO(){}

    private String firstName;
    private String middleName;

    private List<Details> detailsList;

//Setter and getter for first name and last name

public List<Details> getDetailsList() {
        return detailsList;
    }

    public void setDetailsList(List<Details> detailsList) {
        this.detailsList = detailsList;
    }

}

在添加routes条目之后,我得到了这个错误“cannot resolve reference”
请给出一些关于如何定义一个post方法的建议,该方法在路由中采用javapojo?

gwbalxhn

gwbalxhn1#

我不认为在java中直接使用vo是可能的。您需要使用播放请求类型。然后从请求中得到json形式的主体。您可以使用任何json解析器来实现这一点。游戏有一个,但你可以用任何你喜欢的。您的路线如下所示:

POST    /submit                     @controllers.HomeController.submitDetails(request: Request)

从控制器函数中删除static,让它接受http.request而不是vo。

public Result submitDetails(Http.Request request) throws Exception {
    ObjectMapper objectMapper = new ObjectMapper();
    JsonNode json = request.body().asJson();
    DetailsVO dvo = objectMapper.convertValue(json, DetailsVO.class);
    return ok(json.toString());
}

对于这个示例,我使用了jackson json解析器。要使这个特定的解决方案工作,还需要将字段设置为公共字段,因为解析器不适用于私有字段。我建议使用他们网站上的播放文档。可以在这里找到:https://www.playframework.com/documentation/2.8.x/javahome 我建议您在尝试play框架时尝试scala,它使这个框架的代码更加简洁。

相关问题