Spring MVC 正在删除 @PathVariable
Posted
技术标签:
【中文标题】Spring MVC 正在删除 @PathVariable【英文标题】:Spring MVC is dropping a @PathVariable 【发布时间】:2011-04-13 13:00:54 【问题描述】:如果我多次敲击控制器并敲击它,有时我的 modelCode 参数会显示为 null。但是 URL 中包含 modelCode。 使用 Spring Framework 3.0.5.RELEASE
@RequestMapping(value="ws/getallvariants/channelCode/modelCode/regionId/year") public ModelAndView getAllVariants(@PathVariable("channelCode") String channelCode, @PathVariable("modelCode") String modelCode,@PathVariable("regionId") String regionId,@PathVariable("year") String year) if (modelCode == null)
int i = 0; // this should never hit, but does.
【问题讨论】:
你检查过那个控制器的作用域吗(它是默认的单例)吗? 【参考方案1】:是的,RegEx 对我来说也是最可靠的。这样做是为了获取电子邮件地址作为参数:
@RequestMapping(value = "rest/userreadserv/search/email:.+", method = RequestMethod.GET)
public ResponseEntity getUserAccountByEmail(@PathVariable String email) ...
【讨论】:
【参考方案2】:看看Spring MVC @PathVariable getting truncated。正则表达式方法对我有用:
@RequestMapping( "/servers/serverName:.+" )
【讨论】:
在这种情况下不是问题。参数为 2 或 3 个字母数字字符,无小数。我还看到 regionId 现在变为 null。【参考方案3】:再次将 spring 框架更新到最新版本似乎已经奏效。显然,当我们更新我们的框架时,有些东西不能正常工作。
编辑:
所以这根本不是我们的问题...我们错误地实现了一个字符串修剪器编辑器并且它保持状态。因此,当我们将调用置于负载下时,它会交叉结果。
【讨论】:
一年后问题再次出现。看来一开始就没有解决。 问题是实际上没有正确实现的 stringTrimmerEditor。【参考方案4】://in your xml dispatcher add this property to your default annotation mapper bean as follow
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping">
<property name="alwaysUseFullPath" value="true"></property>
</bean>
【讨论】:
以上是关于Spring MVC 正在删除 @PathVariable的主要内容,如果未能解决你的问题,请参考以下文章
Spring mvc 发现不明确的映射。无法映射控制器 bean 方法
基于注解的Spring MVC整合Hibernate(所需jar包,spring和Hibernate整合配置,springMVC配置,重定向,批量删除)