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