是否可以将路径变量和请求参数绑定到单个对象中? [英] Is it possible to bind path variable and request param into a single object?

查看:51
本文介绍了是否可以将路径变量和请求参数绑定到单个对象中?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用路径变量和请求参数创建一个端点. 如何将路径变量和请求参数组合到一个对象中?我在Java 8中使用springboot 2

I'm creating an endpoint with path variable and request params. How do I combine both path variable and request params into a single object? I'm using springboot 2 with java 8

@RequestMapping(path = "/schedules")
public class SchedulesController {

    @GetMapping("/{area}/{subarea}")
    public MyObject getFlight(@PathVariable("area") String area, @PathVariable("subarea") String subarea,
                           MyModel model) {

        ...
        return new MyObject();
    }
}

@Data
public class MyModel {
    LocalDate datestamp,
    String leadName,
    String viceLeadName
}

我看过Spring文档,但似乎找不到如何将PathVariable组合到MyModel中的方法.

I've looked at the spring documentation and I can't seems to find how to combine PathVariable into MyModel.

这是我的没有对象的控制器.

Here is my controller without the object.

@RequestMapping(path = "/schedules")
public class SchedulesController {

    @GetMapping("/{area}/{subarea}")
    public MyObject getFlight(@PathVariable("area") String area, @PathVariable("subarea") String subarea,
                            @RequestParam(value = "datestamp", required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate datestamp,
                            @RequestParam(value = "leadName", required = false) String leadName,
                            @RequestParam(value = "viceLeadName", required = false) String viceLeadName) {

        ...
        return new MyObject();
    }
}

是否可以执行以下操作?路径变量和请求参数在MyModel对象中的哪里?

Is it possible to do the following? Where the path variables and request params are in MyModel object?

@RequestMapping(path = "/schedules")
public class SchedulesController {

    @GetMapping("/{area}/{subarea}")
    public MyObject getFlight(MyModel model) {

        ...
        return new MyObject();
    }
}

@Data
public class MyModel {
    String area,
    String subArea,
    LocalDate datestamp,
    String leadName,
    String viceLeadName
}

推荐答案

创建模型MyModel

Create a Model MyModel

  class MyModel {
    String area;
    String subarea;
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    LocalDate datestamp;
    String leadname;
    String viceleadname;
    @Override
    public String toString() {
        return "MyModel [area=" + area + ", subarea=" + subarea + ", datestamp=" + datestamp + ", leadname=" + leadname
                + ", viceneadname=" + viceleadname + "]";
    }
    public String getArea() {
        return area;
    }
    public void setArea(String area) {
        this.area = area;
    }
    public String getSubarea() {
        return subarea;
    }
    public void setSubarea(String subarea) {
        this.subarea = subarea;
    }
    public LocalDate getDatestamp() {
        return datestamp;
    }
    public void setDatestamp(LocalDate datestamp) {
        this.datestamp = datestamp;
    }
    public String getLeadname() {
        return leadname;
    }
    public void setLeadname(String leadname) {
        this.leadname = leadname;
    }
    public String getViceneadname() {
        return viceleadname;
    }
    public void setViceneadname(String viceleadname) {
        this.viceleadname = viceleadname;
    }

并且请求映射将与您提到的相同.

And the Request mapping will be same as you mentioned.

  @GetMapping("/{area}/{subarea}")
    public String getFlight(MyModel model) {
      System.out.println(model);

        return "success";
    }

请求看起来像这样:

http://localhost:8080/us/ny?datestamp=2019-05-01&leadname=abc&viceleadname=xyz

这篇关于是否可以将路径变量和请求参数绑定到单个对象中?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆