【发布时间】:2015-09-28 11:27:51
【问题描述】:
@Controller
@RequestMapping("/authors")
public class AuthorController {
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
public Author getAuthor(
final HttpServletRequest request,
final HttpServletResponse response,
@PathVariable final String id)
{
// Returns a single Author by id
return null;
}
@RequestMapping(value = "/{id}/author-properties", method = RequestMethod.GET)
public AuthorProperties getAuthorProperties(
final HttpServletRequest request,
final HttpServletResponse response,
@PathVariable final String id)
{
// Returns a single Author's List of properties
return null;
}
@RequestMapping // How to map /authors/*/author-properties to this method ????
public List<AuthorProperties> listAuthorProperties(
final HttpServletRequest request,
final HttpServletResponse response)
{
// Returns a single Author's List of properties
return null;
}
}
class Author {
String propertiesUri;
// other fields
}
class AuthorProperties {
String authorUri;
// other fields
}
基本上我需要:
- /authors - 列出所有作者
- /authors/123 - 通过 id 123 获取作者
- /authors/123/author-properties - 获取 123 作者的 AuthorProperties 对象
- /authors/*/author-properties - 获取所有作者的 AuthorProperties 列表
当我尝试时
@RequestMapping(value = "/*/author-properties", method = RequestMethod.GET)
它仍在将/authors/*/author-properties 映射到getAuthorProperties 方法,路径变量值为“*”。
【问题讨论】:
-
当我将 /*/author-properties 的方法保留在 /{id}/author-properties 的方法之前,它就开始工作了。那么这是一个适当的解决方案吗?我们是否可以始终将映射的处理顺序作为方法声明的顺序进行传递?
标签: java spring spring-mvc controller