Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.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 获取Spring控制器方法中的原始映射值_Java_Spring_Spring Mvc - Fatal编程技术网

Java 获取Spring控制器方法中的原始映射值

Java 获取Spring控制器方法中的原始映射值,java,spring,spring-mvc,Java,Spring,Spring Mvc,因为我使用的是CQRS模式,所以我尝试创建一个控制器方法,该方法通过请求体中的命令接受每个POST调用并发送它。 我就快到了,但是我不能得到路径变量 我创建了一个自定义HandlerMapping @Bean public HandlerMapping requestMappingHandlerMapping() throws NoSuchMethodException { for (final UrlEnum urlEnumItem : UrlEnum.values()) {

因为我使用的是CQRS模式,所以我尝试创建一个控制器方法,该方法通过请求体中的命令接受每个POST调用并发送它。 我就快到了,但是我不能得到路径变量

我创建了一个自定义HandlerMapping

@Bean
public HandlerMapping requestMappingHandlerMapping() throws NoSuchMethodException {
    for (final UrlEnum urlEnumItem : UrlEnum.values()) {
        requestMappingHandlerMapping.registerMapping(new RequestMappingInfo(urlEnumItem.getCommandName(),
                        new PatternsRequestCondition(urlEnumItem.getUrl()),
                        null,
                        null,
                        null,
                        null,
                        null,
                        null),
                commandController,
                commandController.getClass().getDeclaredMethod("commandHandler", HttpServletRequest.class)
        );
    }
    return requestMappingHandlerMapping;
}
这是我的控制器方法签名

@RequestMapping(method = {RequestMethod.POST, RequestMethod.PUT}, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public ResponseEntity<Object> commandHandler(final HttpServletRequest request) throws Exception {
    // controller code here
}
它返回有值的url(即
/api/test/1234
),而不是模板或添加

@PathVariable Map<String, Object> parameters
@PathVariable映射参数
作为方法中的参数,该参数为空

调试请求对象似乎没有任何有用的东西来标识路径变量

也许我应该询问HandlerMapping,但我不能在controller方法中访问它


是否有方法提取控制器方法中的pathVariables?

这是配置中的一个错误。我不应该将RequestMapping注释添加到控制器方法中,因为它覆盖了我的配置

现在我有

@RestController
public class CommandController extends AbstractController {

    private final MappingJackson2JsonView mappingJackson2JsonView = new MappingJackson2JsonView();

    @Override
    protected ModelAndView handleRequestInternal(final HttpServletRequest request, final HttpServletResponse response) throws Exception {
        // controller code here
        return new ModelAndView(mappingJackson2JsonView);
    }
}
@RestController
public class CommandController extends AbstractController {

    private final MappingJackson2JsonView mappingJackson2JsonView = new MappingJackson2JsonView();

    @Override
    protected ModelAndView handleRequestInternal(final HttpServletRequest request, final HttpServletResponse response) throws Exception {
        // controller code here
        return new ModelAndView(mappingJackson2JsonView);
    }
}