我应该在执行 Spring 网络流程时使用 @Controller 类

Should I be using @Controller classes when doing Spring web flow

似乎我可以做控制器 class 在 Spring Web-Flow 中做的所有事情,例如决策制定和从一个页面切换到另一个页面。据我了解,它是 MVC 模型中的 C。我对此是否正确?

所以我的问题是,在使用 Spring Web-Flow 时仍然包含控制器 class 是否有任何优势?

Spring Web Flow 使用 Spring MVC 框架。 DispatcherServlet 处理请求。 FlowHandlerMapping 用于将请求映射到特定的 Web 流。

Web Flow 旨在解决跨多页面导航(页面流或向导)的控制器逻辑所涉及的问题。

Web Flow 可以消除对专用控制器 类 的需求,以按照预定义的工作流完成页面 transitions/form 更新的路径。如果您不需要这样做,只需使用 MVC 就可以节省很多 configuration/complexity。

如果您需要访问请求和响应,适当的设计可能仍然包括一个控制器,同时还有一个 flow.xml。例如,如果您有此代码:

    HttpServletRequest request = (HttpServletRequest)context.getExternalContext().getNativeRequest();
    HttpServletResponse response = (HttpServletResponse)context.getExternalContext().getNativeResponse();

将它放在控制器而不是服务中更容易理解。

此外,如果您想注册自定义编辑器,让控制器在 initBinder() 方法中具有此逻辑可能是有意义的。