【问题标题】:Spring MVC: Mapping Multiple URLs to Same ControllerSpring MVC:将多个 URL 映射到同一个控制器
【发布时间】:2011-04-23 08:14:22
【问题描述】:

我有 20 多个从同一页面链接的表单。一些表单共享同一个控制器,而其他表单则使用自己的控制器。例如,ABC 表单使用 DefaultController,而 D 表单使用 ControllerD

我想要实现的是以一致的方式将 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 模式,您会将 formD.html 映射到 ControllerD,但不确定如何将 form[A|B|C].html 映射到 DefaultController。使用第二种 URL 模式,我什至不知道从哪里开始......

有人做过这样的事吗?

【问题讨论】:

    标签: java spring spring-mvc


    【解决方案1】:

    因为似乎还没有人在这里给出完整的答案:

    @RequestMapping 注释可以将一个数组作为其“值”参数。要使用第一个模式在控制器级别映射它,您可以使用:

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

    然后:

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

    【讨论】:

    • 感谢您的明确回答:)
    • 我把它放在我的方法而不是控制器上,效果很好。
    猜你喜欢
    • 2016-07-04
    • 2018-06-28
    • 2020-01-16
    • 2019-02-15
    • 1970-01-01
    • 2016-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多