如何在SpringMVC上处理具有多个参数的请求

如何在SpringMVC上处理具有多个参数的请求,spring,spring-mvc,Spring,Spring Mvc,我发送了以下需要SpringMVC处理的请求,但它没有 http://localhost:2001/MyProject/flights/find?origin=LAX&destination=WA&departure=&arrival=&return=false 代码 @Controller @RequestMapping("/flights") public class FlightController { @RequestMapping(value

我发送了以下需要SpringMVC处理的请求,但它没有

http://localhost:2001/MyProject/flights/find?origin=LAX&destination=WA&departure=&arrival=&return=false
代码

@Controller
@RequestMapping("/flights")
public class FlightController {

   @RequestMapping(value = "/find?origin={origin}&destination={destination}&departure={departure}&arrival={arrival}&return={return}", method = RequestMethod.GET)
    public String findFlight(@PathVariable String origin,
            String destination, Date departure, Date arrival, boolean return) {

这不是使用
@PathVariable
的正确方式(或位置)。您需要使用
@RequestParam

@Controller
@RequestMapping("/flights")
public class FlightController {
  @RequestMapping("/find")
  public String findFlight(@RequestParam String origin
                          , @RequestParam String destination
                          , @RequestParam(required = false) Date departure
                          , @RequestParam(required = false) Date arrival
                          , @RequestParam(defaultValue = "false", required = false, value = "return") Boolean ret) { ... }
}
请注意,
return
在Java中是一个关键字,因此不能将其用作方法参数名


您还必须添加一个
java.beans.PropertyEditor
来读取日期,因为日期(大概)将采用特定的格式。

试试这个,可能会有用:

 @RequestMapping("/find")
  public String findFlight(@RequestParam("origin") String origin
                          , @RequestParam("destination") String destination,....

我明白了,谢谢,那我什么时候可以使用@PathVariable?当它们采用/param/param2/param4格式时?正确,
@PathVariable
用于从请求路径提取信息。请求路径结束于
,之后请求参数开始。我甚至将日期更改为字符串,但不起作用。你说的“不起作用”是什么意思?是否有错误,参数是否为空?这是正确的机制。请参阅。参数不为null,它不调用findFlight方法。谢谢,正确答案已被接受。你认为答案是错的吗?@Jack它为你提供了另一个选项,以防你不想将url参数命名为与methods参数相同的名称。