【问题标题】:How to pass data from page to page in Thymeleaf based spring boot application如何在基于 Thymeleaf 的 Spring Boot 应用程序中逐页传递数据
【发布时间】:2019-10-07 03:09:58
【问题描述】:

我正在 Spring Boot 中开发应用程序,并且我正在使用 Thymeleaf 作为模板引擎。它就像一个订购应用程序,用户在第 1 页、第 2 页等上选择选项,最后一页我必须将所有以前用户选择的选项保存到数据库。

如果我需要使用会话,谁能建议将数据从一个页面传递到另一个页面的最佳设计方法是什么?我为每个页面定义了模型对象,并且我正在使用这些模型对象传递数据。

【问题讨论】:

    标签: spring-boot spring-mvc thymeleaf


    【解决方案1】:

    会话也很有效。干杯!

    【讨论】:

      【解决方案2】:

      我做了类似下面的事情

      @Component
      @Scope("session")
      public class Cart
      {
         // simple POJO fields
      }
      

      然后在我想要的控制器中使用它

      @Scope("request")
      public class SessionController
      {
         @Autowired
         private Cart cart;
      
         @RequestMapping("/addToCart")
         public String addToCart(@RequestParam("id") int id)
         {
             // 
         } 
      }
      

      由于购物车的范围是会话,因此我可以将此模型对象用于我想要将值放入购物车对象的任何控制器,无论我想从哪里获取值。

      【讨论】:

        【解决方案3】:

        我建议您完成这个简短的教程 (https://spring.io/guides/gs/handling-form-submission/)。它说明了如何将模型属性从客户端页面发送到服务器以及从服务器发送到客户端页面。

        一旦模型被填充到其最终状态,模型就可以通过 Hibernate 和 @Entity 类与您的数据库中的表相对应,如本教程 (https://spring.io/guides/gs/accessing-data-mysql/) 中所示。

        干杯!

        【讨论】:

        • @jeremycoulter 感谢您的回复。您的答案适用于单个请求,即到服务器和客户端的一次往返,但我需要在基于 Struts 的应用程序中保留多次往返的数据,我们可以选择将其保存到会话或将表单范围设为会话,执行我们在 Thymeleaf 中有类似的选项。
        • 是的,模型可以继续在页面之间传递并在每次提交时更新。您还可以将返回的数据数据存储在隐藏的表单元素中(即 ),并在下次提交时将其传递回模型。但是,如果安全性是一个优先事项,那么 Spring Web Flows 在 Spring MVC 中使用并且是一种极好的方法 (baeldung.com/spring-web-flow)。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-15
        • 2016-08-24
        相关资源
        最近更新 更多