使用括号表示法分配变量会引发错误“预期的等号”

时间:2016-03-18 21:11:35

标签: jsp jstl el

我正在尝试从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>

任何建议将不胜感激。

1 个答案:

答案 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},那是因为importpublicclassprotected,{{ 1}},instanceofpackagedefault等等。等等。不得在EL中用作标识符。