【问题标题】:Thymeleaf + Spring boot - use getter method to display imageThymeleaf + Spring boot - 使用getter方法显示图片
【发布时间】:2021-02-19 10:15:22
【问题描述】:

我正在尝试根据登录的用户动态显示图像,方法是从 thymeleaf 中的用户模型调用我的 getImageName(),但我确定一些基本的东西错过了我,这是一个小错误好像没找到。

我的控制器看起来像:

@GetMapping("/myProfile")
public String myProfile(HttpServletRequest request, Model model){
    HttpSession session = request.getSession();
    User user = (User) session.getAttribute("user");
    model.addAttribute("userToDisplay", user);
    System.out.println("Printing from myProfile "+ user.getBio());
    if(user!=null){
        return "myProfile";
    } else{
        return "redirect:/";
    }
}

我可以通过 user.getImageName(); 轻松打印出图像的名称; 我的 thymeleaf 代码行如下所示:

<img th:src="@{user.getImageName()}"/>

如果我用静态文件夹中的一张图片的名称替换 user.getImageName(),它可以正常工作,但这样做时当然是静态的。所有图像都在静态文件夹中以统计文件夹层次结构。

有人知道我在这里实际上做错了什么吗?我在互联网上能读到的只是人们使用他们模型中的一个变量,而我的模型是私有的。我希望有人可以在这里帮助我。

希望你有一个美好的一天! 最好的问候。

【问题讨论】:

    标签: java spring spring-boot thymeleaf


    【解决方案1】:

    不知道错误是什么...不正确的一件事是您在@{...} 表达式中使用变量的方式。如果要使用variable expression,正确的方法是:

    <img th:src="@{${user.imageName}}"/>
    

    您也可以省略@{...},具体取决于imageName 的值。

    <img th:src="${user.imageName}"/>
    

    (而getImageName() 等价于.imageName。)

    【讨论】:

    • 我当然应该提到这个错误。但是谢谢,它使用 工作。我仍然不确定为什么 user.imageName 与 user.imageName() 相同。一定是因为我只在java中思考。我很感激你的回答。非常感谢!祝你有美好的一天。
    • @rasm937k -- 这正是使用 Spring 表达式语言 (SPeL) 时 javabean 命名约定的工作方式,.imageName 表示 .getImageName.isImageName()(用于布尔值)。
    猜你喜欢
    • 1970-01-01
    • 2020-12-17
    • 2017-04-14
    • 2019-01-02
    • 1970-01-01
    • 2023-01-02
    • 2022-06-14
    • 2020-11-28
    • 2021-06-03
    相关资源
    最近更新 更多