我已经创建了这样的POJO。

public class Param(){
    @NotNull
    private Sring paraA;
    @NotNull
    private Sring paraB;

    //Setter and getter
}


我想使用JSR303进行检查。

@RequestMapping(value = "/test/{paraA}/{paraB}")
@ResponseBody
public BaseJsonRsp test(@PathVariable  @Valid Param param) {
  //doSomething
}


但是此代码不起作用,并且出现以下错误

HTTP Status 500 - Missing URI template variable 'value' for method parameter of type PatchValue!


为什么?如何解决?谢谢。

最佳答案

看看@PathVariable上的Spring Refererence Docs


  @PathVariable参数可以是任何简单类型,例如int,long,Date等。


如果要使用Param类型作为控制器方法参数,则将无法使用@PathVariable

另外,您可以将参数映射到各个String变量(使用@PathVariable),然后在此之后手动构造Param。请注意,@PathVariable假定默认情况下URL中的占位符与变量名相同。如果您的变量名不匹配,则可以执行以下操作

@RequestMapping(value = "/test/{paraA}/{paraB}")
@ResponseBody
public BaseJsonRsp test(@PathVariable("paraA") String myParam,
                        @PathVariable("paraB") String otherParam) {
    //doSomething
}

10-06 12:50