我已经创建了这样的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
}