我正在尝试从JSON源调用一个字符串,当被调用时,正常工作:
${item.promo_images["default"].url}
但是,无论何时将其放入变量中,都会抛出错误消息。
<c:set var="photo" value="${item.promo_images["default"].url}" />
${photo}
错误消息显示为:
原因:/ WEB-INF/jsp/features/global/curated-article-list/feature.jsp (第21行,第58列)预期的等号。
我分配此变量的方式是否存在某种问题?我能够使用纯点表示法分配变量,但在这种情况下我必须使用括号的原因是因为JSP似乎不喜欢调用${item.promo_images.default.url}
(与默认单词有关的东西?)< / p>
任何建议将不胜感激。
答案 0 :(得分:1)
仔细观察语法高亮。
<c:set var="photo" value="${item.promo_images["default"].url}" />
"
之前的default
字符结束属性值,default
本身被解释为新属性。你得到的错误,
预期的等号
基本上告诉我们希望在=
和后续default
之间看到"
,如下所示。
<c:set var="photo" value="${item.promo_images[" default="].url}" />
然而,这显然不是你的意图。
请改用单引号。不,它不会被解释为char
orso。
<c:set var="photo" value="${item.promo_images['default'].url}" />
至于为什么你不能使用${item.promo_images.default.url}
,那是因为import
,public
,class
,protected
,{{ 1}},instanceof
,package
,default
等等。等等。不得在EL中用作标识符。