2

我面临一个奇怪的问题。这是我的 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

/someone@someone.com?time=10

我观察到sendercontainssomeone@someone而不是someone@someone.com.

当我这样给它

@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>

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

4

1 回答 1

0

摘自RequestMappingJavaDoc:

@PathVariable 注释参数(仅限 Servlet)用于访问 URI 模板值(即 /hotels/{hotel})。变量值将被转换为声明的方法参数类型。默认情况下,URI 模板将匹配正则表达式 [^.]*(即除句点以外的任何字符),但这可以通过指定另一个正则表达式来更改,例如:/hotels/{hotel:\d+}。此外,@PathVariable 可用于 Map 以访问所有 URI 模板变量。

您的第二个映射定义是正确的并且有效。您可能没有正确测试它。

于 2014-06-13T09:09:22.327 回答