java - Spring MVC : Advanced annotation based mapping

标签 java spring-mvc annotations url-routing

我正在寻找一种方法来实现依赖于数据库内容的复杂 URL 映射。例如,我显示两个 URL 映射:

    /{category}/
    /{category}/{slug}/{id}

类别可以是例如:

    apples, pears, lemons -> resolve to FruitListController, 
    beans, onions, potatoes -> resolve to VegetableListController.
  • 请注意,这些类别存储在数据库中,并且可能会发生更改。

如果我还有 slug 和 id,则必须根据数据库检查它们是否存在。

我可以以某种方式编写某种“类别处理程序”,它会返回相应的类别和关联的 Controller 吗?

显然这是翻译URL -> Request的问题。另外,有没有办法以类似的方式生成反向 Request -> URL ?我想要类似模板的东西:

  <c:foreach="apples as apple"
       <a href="${link AppleController:defaultView, ID = apple.id}">${apple.name}</a>
  </c:foreach>

最佳答案

使用WebArgumentResolvers 。他们可以访问WebRequest查看您的网址。解析器可以进行数据库查找。 FruitWebArgumentResolver 可以返回 Fruit 或返回 UNRESOLVED。 VegetableArgumentResolver 可以返回 Vegetable 或返回 UNRESOLVED。解析参数后,处理程序适配器可以映射到采用特定类型作为参数的 RequestMapping。例如,

@RequestMapping("/{catagory}/{slug}")
public void fruitSlugList(Fruit fruit, @PathVariable("slug") String slug){

要查看这方面的示例,我在这里有一篇博客文章使用相同类型的机制: http://www.adamweigold.com/2012/01/using-multpartrequestresolvers-with.html

关于java - Spring MVC : Advanced annotation based mapping,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9202888/

相关文章:

annotations - Kotlin 注释 IntDef

kubernetes - 了解 pod 标签与注解

java - 理解java中的继承

java - VolatileImage 是线程安全的吗?

java - spring:bind 和 JSR-303 验证。验证失败时无法在页面上显示错误消息

java - Autowiring 依赖项注入(inject)失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException : Could not autowire field:

java - 使用 Jackson 将 Spring 3 ArrayList 序列化为 JSON 而无需包装到对象(无名称)

java - Spring3 的 @Value 注释在我的程序中不起作用

java - 相机中止时应用程序崩溃

mysql - Django 注释 output_field=DecimalField 忽略 max_digits 和 decimal_places