当前位置: 首页 > 知识库问答 >
问题:

MultiActionController的意义是什么?

乔望
2023-03-14

我今天遇到了MultiActionController,我不确定我是否理解它的用途。。。在Spring文档中,它说

允许同一类处理多个请求类型的控制器实现。这个类的子类可以用表单的方法处理几种不同类型的请求

在另一个网站上,他们说

它将多个请求处理方法聚合到单个控制器中,因此相关功能可以很容易地保持在一起。

我仍然不明白扩展MultiActionController与下面的相比是更好还是不同?或者,MultiActionController更像是旧版本Spring的遗留产品?我觉得我有一些基本的误解。。。

@Controller
public class MyController {

    @RequestMapping("/SomePage.html")
    public ModelAndView epdReview(
        @RequestParam(value="sessionID", required=true) String sessionId,
        MyFormData form,
        HttpSession session,
            HttpServletRequest request){
        //....
    }

    @RequestMapping(value = "/newData.json", method = RequestMethod.POST)
    public @ResponseBody ValidationResponse process(Model model,
        @Valid SomeData formData, BindingResult result,
        HttpSession session) {
        //....
    }
}

共有3个答案

房唯
2023-03-14

使用注释控制器的漏洞点——就像你后面的例子一样——是支持请求处理,而不依赖于继承或框架特定的类(就像第一个例子中的四个)。在Spring文档中,您可以找到以下内容:

Spring 2.5为MVC控制器引入了一个基于注释的编程模型,使用诸如@RequestMapping、@RequestParam、@ModelAttribute等注释。此注释支持可用于Servlet MVC和Portlet MVC。以这种样式实现的控制器不必扩展特定的基类或实现特定的接口。

因此,如果您已经在使用带注释的控制器,那么扩展诸如MultiActionController之类的Spring内置控制器就没有意义了。

冯文彬
2023-03-14

Spring提供了一个多动作控制器,通过它可以将多个动作聚合到一个控制器中,将功能分组在一起。多操作控制器能够将请求映射到方法名称,然后调用正确的方法名称。当您在一个控制器中有许多常用功能,但希望有多个控制器入口点时,使用多动作控制器尤其方便

何涵畅
2023-03-14

是的,这是来自Spring 2.0 MVC API,以及实现旧控制器接口的任何东西。我在网上找不到任何关于Spring开发者的东西,为什么这个开发者没有被弃用,而它的所有堂兄弟都被弃用了。

我可以提供100%的纯推测,这可能是因为人们可以拥有MethodNameResolver的完全有效的自定义实现,而这些实现是无法用DefaultAnnotationMethodHandlerAdapter的行为替换的。因此,基于注释的配置并不能100%替代此类的所有合法使用。

 类似资料:
  • 问题内容: 好的,这可能有点钝了,但是Node.js的目的/需求是什么 我主要通过CloudFoundry注意到了它,但是不太确定它应该做什么。但是我猜想它可能相当大,因为为什么VMWare会支持它。 提前致谢。 问题答案: 这是一个… 高效且100%事件驱动的IO框架, 足够灵活,可以使用它可以找到的最佳基础操作系统功能, 以高级编程语言(客户端最有可能使用的相同语言)展示API, 在该语言的最

  • 在UNIX中,我应该编写一个Java文件,将“exit 1”打印到标准错误,然后以1的状态退出。 这是我的方法。 如果是,我应该如何在Unix shell中使用它?当我在bash中编译并运行它时,它只是打印“exit 1”(所以它做了与System.out.println相同的事情,为什么我要使用“err”?)。这里的“标准误差”是什么?

  • 问题内容: 接口允许您创建定义实现它的类的方法的代码。但是,您不能向这些方法添加任何代码。 抽象类使您可以做同样的事情,并向方法中添加代码。 现在,如果您可以使用抽象类实现相同的目标,为什么我们甚至需要接口的概念? 有人告诉我,它与从C ++到Java的OO理论有关,这是PHP的OO东西所基于的。这个概念在Java中有用但在PHP中没有用吗?这只是一种避免在抽象类中乱扔占位符的方法吗?我想念什么吗

  • 问题内容: 我想了解如果我在动态添加的组件中不使用键会发生什么。我删除了键,它的渲染没有任何问题,只是给出了有关键使用的警告消息。有人可以举个例子,说明如果不使用密钥会带来什么后果? 问题答案: 按键可帮助React识别哪些项目已更改,添加或删除。应该为数组内的元素提供键,以赋予元素稳定的标识: 例: TL; DR在渲染动态子级时使用唯一键和常量键,或者期望发生奇怪的事情。 在我使用React.j

  • 问题内容: 这样的方法声明有什么区别: 还有这个: 我的看法是,他们两个都指定传入的对象 必须 是type的子类,那么在这种情况下为什么还要烦恼泛型呢? 问题答案: 在您的情况下,差别不大。 但是请考虑以下几点: 在这种情况下,您可以通过以下方式调用该方法: 如果您使用 您将只能执行以下操作:

  • 问题内容: 只是想知道在这里,让变量在程序中存储无限值有什么意义?是否有实际用途,并且在任何情况下都更可取,还是只是为了插入而插入了一个小片段? 问题答案: 它用作比较的无上限上限值。这对于查找某物的最低值很有用。例如,计算遍历树木时的路径路线成本。 例如,在选项列表中找到“最便宜”的路径: 如果您没有空余时间,您将使用什么价值?就足够-消除了这个猜测。