Java 如何将@PathVariable用于Pojo?
我创造了一个像这样的POJOJava 如何将@PathVariable用于Pojo?,java,spring,web,Java,Spring,Web,我创造了一个像这样的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(@PathVar
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
:
@PathVariable参数可以是任何简单类型,如int、long、Date等
如果要使用Param
类型作为控制器方法参数,则无法使用@PathVariable
执行此操作
或者,您可以将参数映射到单个字符串
变量(使用@PathVariable
),然后手动构建参数
。请注意,@PathVariable
默认情况下假定URL中的占位符与变量名相同。如果变量名不匹配,您可以执行以下操作
@RequestMapping(value = "/test/{paraA}/{paraB}")
@ResponseBody
public BaseJsonRsp test(@PathVariable("paraA") String myParam,
@PathVariable("paraB") String otherParam) {
//doSomething
}
您需要明确地将URL中的变量值设置为Param对象
@RequestMapping(value = "/test/{paraA}/{paraB}")
@ResponseBody
public BaseJsonRsp test(@PathVariable("paraA") String paramA, @PathVariable("paraB") String paramB) {
Param param = new Param(paramA, paramB);
}
@默认情况下,PathVariable假定URL中的占位符与变量名相同。你需要这样做
@RequestMapping(value = "/test/{paraA}/{paraB}")
@ResponseBody
public BaseJsonRsp test(@PathVariable("paraA") String paramA,
@PathVariable("paraB") String otherparam) {
Param param = new Param(paramA, paramB);
}
从错误消息中,我猜您没有添加足够的代码来描述您的问题。请更具体地说明您的问题,以获得更快的答案。不知道这是否有效,但您是否尝试过
@PathVariable String paraA、@PathVariable String paraB、@Valid@Value(${new com.foo.Param(#paraA,#paraB)})Param Param
?我只想将@PathVariable的值设置为pojo,我不知道该怎么做……你的引用有点误导性,因为Spring可以使用任何可以通过转换器运行的东西,尽管在@PathVariable
的情况下,它必须是一个单一参数。@chrylis感谢你的澄清。我从未用PathVariable做过比这更复杂的事情,所以我不知道该选项。正如您所提到的,它可能仍然不是这里的解决方案,但我将使用一个简单的示例并在这里进行更新。有趣的是,Spring文档的短语是这样的。我知道设置名称,但是如果我设置了paraA这样的名称,如何将值设置到我的pojo?谢谢,我已经知道解决问题的方法,但我只想使用param作为参数。