Spring MVC抽象控制器PathVariable

时间:2015-10-16 09:00:01

标签: java spring rest spring-mvc abstract-class

我有一个抽象控制器,并且在其中一些操作中有路径变量:

@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;

当我扩展并使用它时,所有请求映射都正常工作。但不幸的是,路径变量总是为空。

你可以帮助我吗?

提前致谢

1 个答案:

答案 0 :(得分:1)

正如M.Deinum指出: 从扩展这个抽象控制器之后我扣除的内容,你有类似的东西:

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

这意味着您将使用的控制器实例实际上没有@PathVariable映射描述和告诉Spring它应该将它作为方法的参数提供。 解决方案:在扩展控制器中添加@PathVariable:

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