弹簧MVC:将多个URL映射到同一控制器

2022-08-31 16:00:07

我有20多个表格,这些表格是从同一页面链接的。某些窗体共享相同的控制器,而其他窗体则使用自己的控制器。例如,窗体 、 和 用法 ,而窗体使用 。ABCDefaultControllerDControllerD

我想实现的是以一致的方式将URL映射到每个表单。

因此,理想情况下,链接页面将如下所示:

  • 要么这个

    <a href="/formA.html">Form A</a>
    <a href="/formB.html">Form B</a>
    <a href="/formC.html">Form C</a>
    <a href="/formD.html">Form D</a>
    
  • 或者这个:

    <a href="/form.html?name=A">Form A</a>
    <a href="/form.html?name=B">Form B</a>
    <a href="/form.html?name=C">Form C</a>
    <a href="/form.html?name=D">Form D</a>
    

问题是如何将每个 URL 映射到相应的控制器。使用第一个 URL 模式,您将映射到 ,但不确定如何映射到 。使用第二种URL模式,我甚至不知道从哪里开始...formD.htmlControllerDform[A|B|C].htmlDefaultController

有人做过这样的事情吗?


答案 1

由于似乎没有人在这里给出完整的答案:

注释可以为其“value”参数采用数组。要使用第一种模式在控制器级别映射此模式,请使用:@RequestMapping

@Controller
@RequestMapping(value={"/formA.html", "/formB.html", "/formC.html"})
public class ControllerA {

}

然后:

@Controller
@RequestMapping(value="/formD.html")
public class ControllerD {

}

答案 2

推荐