Thymeleaf图像src + ParseException:评估SpringEL表达式的异常:" currentUser.get(' profilePicture')。get(' url')"

时间:2017-04-05 08:13:29

标签: java html image thymeleaf parse4j

我从ApplicationAdvice课程获得一个currentUser,并在用户登录后在每个页面上显示:

@ModelAttribute("currentUser")
public TmtUser currentUser(Model model) {

    TmtUser currentUser = TmtUser.currentUser;
    model.addAttribute("currentUser", currentUser);

    return currentUser;
}

currentUser对象具有url属性。但我收到错误呈现页面的网址。也许在提供url值之前呈现DOM?我怎么知道?

HTML:

<img th:src="${currentUser.get('profilePicture').get('url')}" src="" />

例外:

Caused by: org.attoparser.ParseException: Exception evaluating SpringEL expression: "currentUser.get('profilePicture').get('url')" (template: "fragments/header" - line 72, col 139)
    at org.attoparser.MarkupParser.parseDocument(MarkupParser.java:393) ~[attoparser-2.0.2.RELEASE.jar:2.0.2.RELEASE]
    at org.attoparser.MarkupParser.parse(MarkupParser.java:257) ~[attoparser-2.0.2.RELEASE.jar:2.0.2.RELEASE]
    at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parse(AbstractMarkupTemplateParser.java:230) ~[thymeleaf-3.0.3.RELEASE.jar:3.0.3.RELEASE]
    ... 105 common frames omitted

对象模型:

enter image description here

浏览器控制台错误:

org.parse4j.ParseFile@190687b3 Failed to load resource: the server responded with a status of 404 ()

似乎ParseFile本身并没有在浏览器中加载。

1 个答案:

答案 0 :(得分:1)

您认为这个表达意味着什么?

currentUser.get('profilePicture').get('url')

currentUser对象是否有一个看起来像这样的方法?

public class TmtUser {
    public Map<String, Object> get(String key) {
        ...
        ...
    }
}

因为这就是你想要做的事情。但根据你的对象的图片,没有类似的东西。在制作这些表达式时,您需要考虑它在java中的外观。例如,在java中它可能如下所示:

currentUser.getData().get("profilePicture").getUrl()

翻译成表达式,它看起来像:

${currentUser.data['profilePicture'].url}
or
${currentUser.data.get('profilePicture').url}

(对于我不熟悉ParseFile的caviat,所以我不确定它是否有url属性的获取和设置器)