Java SpringMVC:基于注释的高级映射

Java SpringMVC:基于注释的高级映射,java,spring-mvc,annotations,url-routing,Java,Spring Mvc,Annotations,Url Routing,我正在寻找一种根据数据库内容进行复杂URL映射的方法。例如,我显示了两个URL映射: /{category}/ /{category}/{slug}/{id} 类别可以是,例如: apples, pears, lemons -> resolve to FruitListController, beans, onions, potatoes -> resolve to VegetableListController. 请注意,这些类别存储在数据库

我正在寻找一种根据数据库内容进行复杂URL映射的方法。例如,我显示了两个URL映射:

    /{category}/
    /{category}/{slug}/{id}
类别可以是,例如:

    apples, pears, lemons -> resolve to FruitListController, 
    beans, onions, potatoes -> resolve to VegetableListController.
  • 请注意,这些类别存储在数据库中,可能会更改
如果我还有slug和id,则必须根据数据库检查它们(如果存在)

我是否可以编写某种类型的“类别处理程序”,返回相应的类别和关联的控制器

显然,这是翻译URL->Request的问题。另外,是否有类似的方法向后生成请求->URL?我希望模板中有类似的内容:

  <c:foreach="apples as apple"
       <a href="${link AppleController:defaultView, ID = apple.id}">${apple.name}</a>
  </c:foreach>
使用。他们可以访问以查看您的URL。解析程序可以执行数据库查找。水果WebArgumentResolver可以返回水果或返回未解析的结果。VegetableArgumentResolver可以返回一个蔬菜或返回未解决的。解析参数后,处理程序适配器可以映射到将特定类型作为参数的RequestMapping。比如说,

@RequestMapping("/{catagory}/{slug}")
public void fruitSlugList(Fruit fruit, @PathVariable("slug") String slug){
为了了解这方面的一个例子,我在这里发布了一篇博客文章,它使用了相同类型的机制:

感谢您提供的解决方案,尽管我不确定这篇博文与我的问题有何关联。这样定义可选参数是否可行?我还一直在考虑为给定的控件:视图生成URL——它是否提供了一些工具来生成它们?我不知道“生成URL”是什么意思。至于可选参数,如果它们是RequestParams,那么它们可以是可选的。博客文章只是展示了一个使用ArgumentResolver的示例。如果解决方案是好的,请接受答案(勾选)。