Java 转换的@PathVariables可以相互引用吗?
我有一个SpringJava 转换的@PathVariables可以相互引用吗?,java,spring,spring-mvc,annotations,Java,Spring,Spring Mvc,Annotations,我有一个Spring@RequestMapping和几个@PathVariables,第一个是缩小到第二个所必需的,您可以在下面的示例中看到,为了获得模块,我需要获得部门。使用普通的String@PathVariables,我可以这样做: @RequestMapping("/admin/{dept}/{mod}/") public String showModule(@PathVariable String dept, @PathVariable String mod) { Depart
@RequestMapping
和几个@PathVariable
s,第一个是缩小到第二个所必需的,您可以在下面的示例中看到,为了获得模块,我需要获得部门。使用普通的String
@PathVariable
s,我可以这样做:
@RequestMapping("/admin/{dept}/{mod}/")
public String showModule(@PathVariable String dept, @PathVariable String mod) {
Department department = dao.findDepartment(dept);
Module module = department.findModule(mod);
return "view";
}
但是我非常希望使用Spring的Converter
API将部门直接指定为@PathVariable
。因此,在我注册了一个自定义的转换器类之后,这就可以工作了:
@RequestMapping("/admin/{dept}/")
public String showDept(@PathVariable Department dept) {
return "view";
}
但是Converter API不提供正在转换的单个参数之外的访问权限,因此不可能为模块
实现转换器
。有没有其他API可以使用?我正在关注HandlerMethodArgumentResolver
-有人解决过这样的问题吗,还是你坚持使用String@PathVariables
我使用的是Spring 3.1。我没有这样做,但我想到的一种方法是为这两个版本制作一个单独的转换器:
@RequestMapping("/admin/{deptAndModule}/")
public String showDept(@PathVariable DepartmentAndModule deptAndModule) {
return "view";
}
并使转换器能够采用“deptid modid”形式的输入,例如“ch-c104”。由于请求与/admin/*/的RequestMapping模式不匹配,因此不可能用斜杠分隔它们
在我的例子中,需求发生了轻微的变化,因此模块代码是完全唯一的,不需要限定在部门范围内。所以我不需要再这样做了。如果我这样做了,我可能会避免自动模块转换,而使用该方法手动进行转换。那么您需要了解部门才能加载模块?