Ошибочное поведение языка выражения JSP?

Я начал получать это сообщение после того, как отключил параметры «Мультимедийное устройство (MTP)» и «Камера (PTP)» в параметре «Подключение к компьютеру через USB», который находится в меню «Настройки»> «Хранение»> «Подключение к компьютеру через USB». Повторное включение одного из MTP или PTP устранило проблему для меня.

5
задан BalusC 30 January 2010 в 18:56
поделиться

2 ответа

Это поведение описано в разделе 1.6 Спецификации языка выражений версии 2.1 .

Чтобы оценить expr-a [expr-b]:

Если value-a равно null:

  • Если expr-a [expr-b] - последнее разрешаемое свойство:
    • Если выражение является выражением значения и ValueExpression.getValue (контекст) был призван инициировать это выражение оценка, вернуть null.
    • В противном случае выбросить PropertyNotFoundException. пытается de-reference null для lvalue
  • В противном случае вернуть null.

(EL объединяет операторы. и [])

5
ответ дан 14 December 2019 в 08:59
поделиться

Именно так работает EL.

$ {helper} оценивается как null, поэтому EL просто возвращает "" и не пытается вычислить остальную часть выражения.

Это своего рода удобная функция в некоторых случаях:

${myBean.property1.name}

будет работать, если даже если свойство property1 равно null, поэтому мне не нужно писать только для предотвращения NPE:

<c:if test="${not empty myBean.property1}">${myBean.property1.name}</c:if>
2
ответ дан 14 December 2019 в 08:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: