使用括号符号分配变量会引发错误 "equal symbol expected"

Assigning a variable with bracket notation throws error "equal symbol expected"

我正在尝试从 JSON 来源调用一个字符串,当这样调用时 有效 :

${item.promo_images["default"].url}

然而,每当我将其放入变量中时,它都会抛出一条错误消息。

<c:set var="photo" value="${item.promo_images["default"].url}" />

${photo}

错误信息如下:

Cause: /WEB-INF/jsp/features/global/curated-article-list/feature.jsp (line: 21, column: 58) equal symbol expected.

我分配这个变量的方式有问题吗?我可以使用纯点符号来分配变量,但在这种情况下我不得不用括号的原因是因为 JSP 似乎不喜欢调用 ${item.promo_images.default.url} (与这个词有关默认?)

如有任何建议,我们将不胜感激。

仔细观察语法突出显示。

<c:set var="photo" value="${item.promo_images["default"].url}" />

default 之前的 " 字符结束属性值,default 本身被解释为新属性。你得到的错误,

equal symbol expected

基本上表明它希望在 default 和随后的 " 之间看到一个 =,如下所示。

<c:set var="photo" value="${item.promo_images[" default="].url}" />

但是,这显然不是您的本意。

改用单引号。不,它不会被解释为 char 左右。

<c:set var="photo" value="${item.promo_images['default'].url}" />

至于为什么不能使用${item.promo_images.default.url},那是因为Java语言标识符,如importpublicclassprotectedinstanceofpackagedefaultwhile 等..等.. 不能用作 EL.

中的标识符