【问题标题】:Does Spring webflux support jsp view/tiles viewSpring webflux 是否支持 jsp 视图/tiles 视图
【发布时间】:2018-12-24 05:11:05
【问题描述】:

我正在升级我们应用程序中的 spring 版本,该版本早于 spring 4.3,在升级到 spring 5 时,我们希望更改应用程序的某些部分以使用可用的响应式功能。 MVC 和 WebFlux 在应用程序中并排工作,但视图分辨率在 webflux 中不起作用,如果它不支持的话。

    @RequestMapping(value = "/react/createWithReactive")
    public Mono<String> reactCreateWithReactive(Model map) {
              return Mono.just("createPage");
    }

【问题讨论】:

    标签: spring-mvc spring-webflux apache-tiles tiles-3


    【解决方案1】:

    根据 Spring 官方文档,视图分辨率与 MVC 相同

    https://docs.spring.io/spring-framework/docs/5.0.x/spring-framework-reference/web-reactive.html#webflux-viewresolution

    1.3.6。在 Spring MVC 中查看分辨率相同

    视图分辨率允许使用 HTML 模板渲染到浏览器 和一个模型,而无需将您绑定到特定的视图技术。在春天 WebFlux,视图分辨率通过专用的支持 使用 ViewResolver 映射字符串的 HandlerResultHandler, 表示一个逻辑视图名称,到一个视图实例。视图是然后 用于呈现响应。

    在 Spring MVC 中处理相同

    传递给 ViewResolutionResultHandler 的 HandlerResult 包含 从处理程序返回值,以及包含的模型 在请求处理期间添加的属性。返回值为 处理为以下之一:

    String, CharSequence — 要解析为视图的逻辑视图名称 通过已配置的 ViewResolver 的列表。

    void — 根据请求路径减去默认视图名称 前导和尾随斜杠,并将其解析为视图。也一样 当未提供视图名称时发生,例如模型属性是 返回,或异步返回值,例如Mono 完成为空。

    渲染 — 视图分辨率场景的API;探索选项 带有代码完成功能的 IDE。

    Model, Map — 要添加到模型中的额外模型属性 请求。

    任何其他 — 任何其他返回值(除了简单类型,如 由 BeanUtils#isSimpleProperty 确定)被视为模型 要添加到模型的属性。属性名称来源于 类名,使用约定,除非处理程序方法 @ModelAttribute 注解存在。

    模型可以包含异步、反应类型(例如来自 Reactor、 RxJava)。在渲染之前,AbstractView 会解析这样的模型 属性转换为具体值并更新模型。单值 反应类型被解析为单个值,或者没有值(如果为空) 而多值反应类型,例如通量被收集和 解析为 List。

    配置视图分辨率就像添加一个 ViewResolutionResultHandler bean 到您的 Spring 配置。 WebFlux Config 为视图解析提供了专用的配置 API。

    有关集成的视图技术的更多信息,请参阅视图技术 使用 Spring WebFlux

    【讨论】:

    • 对于MVC和WebFlux MVC,视图解析器有如下两个接口: org.springframework.web.servlet.ViewResolver 有方法View resolveViewName(String viewName, Locale locale) throws Exception; WebFlux: org.springframework.web.reactive.result.view.ViewResolver Mono resolveViewName(String viewName, Locale locale);由于两个接口不同,目前还没有在磁贴中实现响应式。
    猜你喜欢
    • 2011-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-07
    • 2019-10-14
    • 1970-01-01
    • 2013-06-08
    • 2017-11-06
    相关资源
    最近更新 更多