这是spring mvc控制器/city/{cityName}
@RequestMapping(value = "/city/{cityName}")
public String getCity (@PathVariable("cityName") String cityName, Model uiModel) {
}
www.example.com/city/{cityName}
这里cityName是从url动态加载的,我的网站无法支持cityName的某些功能,由于动态因素,它只支持班加罗尔、科钦、海得拉巴和金奈它支持其他城市或cityName的任何位置,它给出错误,如何将cityName仅限于上述4个城市。
控制器本身是否有任何方法,或者我们必须维护表(硬编码哈希表)
建议哪种方法是进行的最佳方法
如果您只想在代码中对这四个城市进行硬编码,还可以在@RequestMapping
中使用正则表达式指定它们。
@RequestMapping("/cities/{cityName:Bengaluru|Kochin|Hyderabad|Chennai}")
public String getCity(@PathVariable("cityName") String cityName) {
}
这样,如果您指定的城市与允许的值不匹配,您的控制器将自动返回HTTP404。
更新:修复了示例,正则表达式应该在@RequestMapping
中,而不是在@PathVariable
中,很抱歉出现错误
您要么需要单独的控制器映射,要么在某处查找cityName
。这不需要硬编码;您可以使用YAML或属性文件来初始化Set
或在数据库中查找它。
我们可以在控制器级别静态执行@RequestMapping(value="/city/{cityname:bengaluru|chennai|kochin|hyderabad}")或者,我们可以在应用程序启动时创建表、查询并将其放入哈希表中。