我面临一个奇怪的问题。
这是我的REST API映射

@RequestMapping(
    value = { "/{email}" },
    method = RequestMethod.GET,
    params = "time")
public void getEmail(
    @PathVariable("email") final String sender,
    @RequestParam(value = "time", required = true) final long time)


当我这样调用API

/[email protected]?time=10


我发现sender包含someone@someone而不是[email protected]

当我这样给它

@RequestMapping(
    value = { "/{email:.+}" },
    method = RequestMethod.GET,
    params = "time")
public void getEmail(
    @PathVariable("email") final String sender,
    @RequestParam(value = "time", required = true) final long time)


我收到406错误。

我也尝试过

<bean
    class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping">
    <property name="useSuffixPatternMatch" value="false" />
</bean>


仍然没有帮助。
我究竟做错了什么?

最佳答案

摘自RequestMapping JavaDoc:


  @PathVariable带注释的参数(仅用于Servlet),用于访问URI
  模板值(即/ hotels / {hotel})。可变值将是
  转换为声明的方法参数类型。默认情况下,URI
  模板将与正则表达式[^。] *(即任意
  而不是句号),但是可以通过指定
  另一个正则表达式,例如:/ hotels / {hotel:\ d +}。
  此外,@ PathVariable可以在地图上使用
  获得对所有URI模板变量的访问权限。


您的第二个映射定义正确且有效。您可能尚未正确测试。

08-04 22:28