简体   繁体   English

Spring MVC抽象控制器PathVariable

[英]Spring MVC Abstract Controller PathVariable

I've an abstract controller and have path variables in some of it's operations: 我有一个抽象控制器,并且在某些操作中包含路径变量:

@Controller
@RequestMapping("/generic-status/v1")
public abstract class GenericStatusController{

    @RequestMapping(value = "/connection/availability/{connectionName}", method = { RequestMethod.GET })
    @ResponseStatus(HttpStatus.OK)
    @ResponseBody
    public abstract ConnectionResult checkConnection( @PathVariable("connectionName") String connectionName ) throws ConnectionException, ParameterInvalidException, StatusApiException;

When I extend and use it all request mappings are working properly. 当我扩展并使用它时,所有请求映射均正常工作。 But unfortunately path variable always come as null. 但不幸的是,路径变量始终为null。

Could you please help me in this ? 你能帮我这个忙吗?

Thanks in advance 提前致谢

As M.Deinum pointed out: From what ive deducted after extending this abstract controller you have something like this: 正如M.Deinum指出的那样:从扩展此抽象控制器后得出的IVE中,您将得到以下内容:

@Override
ConnectionResult checkConnection(String connectionName) throws ConnectionException, ParameterInvalidException, StatusApiException; {
     // logic
}

Which means that the instance of controller you will be using has actually no @PathVariable mapping describing and telling Spring it should provide it as an argument to the method. 这意味着您将使用的控制器实例实际上没有@PathVariable映射,该映射描述并告诉Spring应该将其作为方法的参数提供。 Solution: Add @PathVariable also in extending controller: 解决方案:在扩展控制器中也添加@PathVariable:

@Override
ConnectionResult checkConnection(@PathVariable("connectionName") String connectionName) throws ConnectionException, ParameterInvalidException, StatusApiException; {
     // logic
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM