【问题标题】:How to combine Spring Loaded with a Vaadin TouchKit application?如何将 Spring Loaded 与 Vaadin TouchKit 应用程序结合使用?
【发布时间】:2015-09-03 08:34:02
【问题描述】:

我成功运行了以下示例(简单的 Spring Web 应用程序): https://www.youtube.com/watch?v=GTrNkhVnJBU

现在我想在一个基于 Spring Boot 和 Vaadin TouchKit 的项目中使用 Spring Loaded。

当我进行更改时(例如 ComboBox 的新标题),Spring Loaded 似乎可以识别它:

2015-09-03 10:23:08.823  INFO 1956 --- [Loader@799dbc3b] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2015-09-03 10:23:08.823  INFO 1956 --- [Loader@799dbc3b] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest)
2015-09-03 10:23:08.831  INFO 1956 --- [Loader@799dbc3b] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2015-09-03 10:23:08.831  INFO 1956 --- [Loader@799dbc3b] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest)
2015-09-03 10:23:08.842  INFO 1956 --- [Loader@799dbc3b] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2015-09-03 10:23:08.843  INFO 1956 --- [Loader@799dbc3b] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest)
2015-09-03 10:23:08.870  INFO 1956 --- [Loader@799dbc3b] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2015-09-03 10:23:08.870  INFO 1956 --- [Loader@799dbc3b] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest)

但按 F5 刷新浏览器后,我看不到变化(ComboBox 的标题与以前保持一致)。

我错过了什么吗?在 Spring Loaded 与 Vaadin TouchKit 一起工作之前,我还需要做其他事情吗?

感谢您的阅读以及您可能提前获得的任何提示!

编辑:

当我在简单的 Spring Web 应用程序示例中进行更改时,我得到以下日志输出:

2015-09-03 10:51:06.503  INFO 8388 --- [Loader@14dad5dc] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/]}" onto java.lang.String ???.???.tests.springloaded.SpringLoadedController.home()
2015-09-03 10:51:06.504  INFO 8388 --- [Loader@14dad5dc] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2015-09-03 10:51:06.504  INFO 8388 --- [Loader@14dad5dc] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest)

所以上下文“/”似乎在那里更新,但不是在 TouchKit 应用程序中。

【问题讨论】:

    标签: java spring-boot vaadin spring-loaded vaadin-touchkit


    【解决方案1】:

    我使用 Spring Boot + Spring Loaded + Vaadin 创建了一个简单的示例项目 https://github.com/Artur-/spring-boot-loaded-vaadin

    使用 mvn install spring-boot:run 运行它,您可以更改 UI 类并在刷新后查看更改。

    我看不出 TouchKit 会改变什么,除非你的 UI 类上有 @PreserveOnRefresh。在这种情况下,除了刷新之外,您还需要通过将 ?restartApplication 添加到 URL 来强制创建新的 UI 实例。

    【讨论】:

    • 感谢您的回答和 GitHub 项目。我的问题的原因实际上是我的 UI 类上的 @PreserveOnRefresh 注释(在注释掉 Spring Loaded 按预期工作后,将 ?restartApplication 添加到 URL 中由于某种原因不起作用)。虽然我没有让它与我的项目一起工作,但自动重新加载的想法也很好。
    猜你喜欢
    • 2017-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-08
    • 1970-01-01
    • 1970-01-01
    • 2019-04-02
    • 1970-01-01
    相关资源
    最近更新 更多