我面临一个奇怪的问题。
这是我的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模板变量的访问权限。
您的第二个映射定义正确且有效。您可能尚未正确测试。