Thymeleaf 图像 src + ParseException:评估 SpringEL 表达式的异常:"currentUser.get('profilePicture').get('url')"
Thymeleaf image src + ParseException: Exception evaluating SpringEL expression: "currentUser.get('profilePicture').get('url')"
我从我的 ApplicationAdvice
class 得到一个 currentUser 并在用户登录时在每个页面上显示它:
@ModelAttribute("currentUser")
public TmtUser currentUser(Model model) {
TmtUser currentUser = TmtUser.currentUser;
model.addAttribute("currentUser", currentUser);
return currentUser;
}
currentUser
对象有一个可用的 url
属性。但是我在将 url 渲染到页面时遇到错误。也许 DOM 在提供 url
值之前呈现?我怎么知道?
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
对象模型:
浏览器控制台错误:
org.parse4j.ParseFile@190687b3 Failed to load resource: the server responded with a status of 404 ()
似乎 ParseFile 本身没有加载到浏览器中。
你认为这个表达是什么意思?
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 不熟悉,所以我不确定它是否具有 url 属性 的获取和 setter)
我从我的 ApplicationAdvice
class 得到一个 currentUser 并在用户登录时在每个页面上显示它:
@ModelAttribute("currentUser")
public TmtUser currentUser(Model model) {
TmtUser currentUser = TmtUser.currentUser;
model.addAttribute("currentUser", currentUser);
return currentUser;
}
currentUser
对象有一个可用的 url
属性。但是我在将 url 渲染到页面时遇到错误。也许 DOM 在提供 url
值之前呈现?我怎么知道?
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
对象模型:
浏览器控制台错误:
org.parse4j.ParseFile@190687b3 Failed to load resource: the server responded with a status of 404 ()
似乎 ParseFile 本身没有加载到浏览器中。
你认为这个表达是什么意思?
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 不熟悉,所以我不确定它是否具有 url 属性 的获取和 setter)