设计我的安息API,我想使用uli之后

http://[HOST]/[PLANET]/[LAT];[LONG]

例如

http://myserver/earth/50.2;29.1

Spring MVC中这种方法的适当注释是什么?这是可以的吗?

@RequestMapping(value = "/{planet}/{lat};{long}", method = RequestMethod.GET)
public String showInfoAboutCoords(
  @PathVariable final String planet, 
  @PathVariable final String lat,
  @PathVariable final String long, 
  final HttpServletResponse response) {
        // Implementation
}

如果这还可以 - 什么是 @MaskFormat("###-##-####") 好吗?

有帮助吗?

解决方案

您的URI模式有两个问题:

  • 一些servlet容器可能会治疗 ; 作为定界线并修剪URI(例如,Tomcat的 错误30535)。因此,作为解决方法,您可以使用一些不同的角色,例如 ,.
  • 默认情况下,Spring MVC将URI中的点视为扩展分离器,并将其修剪。您可以通过为路径变量指定REGEXP模式来覆盖它。

所以,你会有类似的东西

@RequestMapping(value = "/{planet}/{lat:.*},{long:.*}", method = RequestMethod.GET) 

请注意,由于您禁用了Spring的扩展操作,因此必须在需要时手动启用它(这还需要更限制的Regexp,以免将小数点与扩展分隔器混淆):

@RequestMapping(value = 
    {"/{planet}/{lat:.*},{long:\\d+\\.\\d+}", 
         "/{planet}/{lat:.*},{long:\\d+\\.\\d+}.*"}, 
    method = RequestMethod.GET)

经过 @MaskFormat 您可能是指从 mvc-showcase (请注意,这是内置注释)。随着 MaskFormatAnnotationFormatterFactory 它演示了将路径变量(IE字符串)转换为方法参数的新格式面式。实际上是转换的 StringS到 StringS,因此仅用于验证。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top