如何在 thymeleaf 中访问 Spring session bean 范围

Posted

技术标签:

【中文标题】如何在 thymeleaf 中访问 Spring session bean 范围【英文标题】:How to access spring session bean scope in thymeleaf 【发布时间】:2017-05-13 19:27:17 【问题描述】:

我已经定义了我的对象

  @Component
  @Scope(value = "session", proxyMode = ScopedProxyMode.TARGET_CLASS) 
  public class MySession 
      private String message;

     // getter setter
  

当我尝试从 thymeleaf 访问时失败了。

<p th:text="$mySession.message"></p>

解决方案

通过spring bean访问

http://www.thymeleaf.org/doc/articles/springmvcaccessdata.html

 <p th:text="$@mySession.getMessage()"></p>

【问题讨论】:

什么失败了?有什么错误吗? 错误消息:在 null 上找不到属性或字段“消息”。但是,我找到了解决方案,通过 spring bean 访问 【参考方案1】:
session.setAttribute("mySessionAttribute", "someValue");

您可以直接访问会话属性。

$#session.getAttribute('mySessionAttribute')

【讨论】:

【参考方案2】:

例如会话 bean

@Component
@SessionScope
public class State implements Serializable 

    private String pdfPropertyName;

    public String getPdfPropertyName() 
        return pdfPropertyName;
    
    public void setPdfPropertyName(String pdfPropertyName) 
        this.pdfPropertyName = pdfPropertyName;
    

在控制器中

@Controller
@RequestMapping("uploadPdf")
public class UploadPdfController 

    @Autowired State state;

    @ModelAttribute("pdfPropertyName")
    public String getPdfPropertyName() 
        return state.getPdfPropertyName();
    


可以通过

<span th:text="$pdfPropertyName"></span>

【讨论】:

以上是关于如何在 thymeleaf 中访问 Spring session bean 范围的主要内容,如果未能解决你的问题,请参考以下文章

如何访问我的对象 Thymeleaf 的属性(Spring Boot)

spring boot使用thymeleaf

关于在Spring项目中使用thymeleaf报Exception parsing document错误

如何使用 Spring Boot Thymeleaf 显示当前登录的用户?

Spring Boot 2.4.2 和 Thymeleaf 3.0.12 - 访问静态方法

SpringBoot访问NoSQL和简单的Thymeleaf-Spring-Spring-boot整合