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

63
我有20多个表单,这些表单链接到同一个页面。一些表单共用同一个控制器,而其他表单使用自己的控制器。例如,表单 A、B 和 C 使用 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模式,我甚至不知道从哪里开始... 有人做过这样的事吗?
    1个回答

    186

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

    @RequestMapping注释可以在"value"参数中使用数组。要在控制器级别映射第一个模式,您可以使用:

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

    然后:

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

    1
    感谢您的明确回答 :) - Hossein
    5
    我将这个方法放在了我的代码中,而不是控制器中,现在它运行得很好。 - user3885927

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接