Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将@PathVariable用于Pojo?_Java_Spring_Web - Fatal编程技术网

Java 如何将@PathVariable用于Pojo?

Java 如何将@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

我创造了一个像这样的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

@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作为参数。