Spring控制器不接收HttpServletRequet或@PathVariable或@ModelAttribute值

时间:2016-06-28 15:35:30

标签: spring spring-mvc websphere websphere-7

我有一个在WebSphere 7上运行的Spring 4 Web应用程序,我也可以使用Jetty进行本地开发。我无法从WAS更改,我无法更改版本。我正在重构一个非常遗留的应用程序并试图添加Spring来处理功能,并且我重构了servlet。

我有几个控制器可以在Jetty中正常工作。以下是我的几个请求映射:

@RequestMapping(value = "/bank/{routingNumber}", method = RequestMethod.GET)
@ResponseBody
public NACHABank getNachaBank(@PathVariable String routingNumber) {
    return bankingService.loadBankByRoutingNumber(routingNumber);
}

@RequestMapping(value = "/payment/accountType", method = RequestMethod.POST)
public String createPaymentBatch(@ModelAttribute PaymentRequest paymentRequest, HttpServletRequest request) {
  //do some stuff
  return jspName;
}

当我在WAS(本地和我的测试环境中)中运行时,@PathVariable routingNumber为空。在另一个请求映射中,@ModelAttribute paymentRequestHttpServletRequest request为空。

当我在Jetty中运行时,它们不是,一切正常。

在WAS中,我在服务器启动时没有错误,我得到了正常的Spring启动消息。我的端点映射即:

[6/28/16 10:20:30:695 CDT] 00000025 RequestMappin I org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping register Mapped "{[/bank/{routingNumber}],methods=[GET]}" onto public com.company.domain.NACHABank com.company.view.controller.BankController.getNachaBank(java.lang.String)

[6/28/16 10:20:30:726 CDT] 00000025 RequestMappin I org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping register Mapped "{[/payment/paymentType],methods=[POST]}" onto public java.lang.String com.company.view.controller.PaymentController.createPaymentBatch(com.company.view.request.PaymentRequest,javax.servlet.http.HttpServletRequest)

可能导致此行为的原因是什么?

1 个答案:

答案 0 :(得分:1)

我回过头来看看我的承诺历史,我知道这在某一点上有效。几个月前,我从4.1.1升级到Spring 4.3,这就是导致控制器崩溃的原因。我降级到4.1.1,现在一切正常。