Я начал получать это сообщение после того, как отключил параметры «Мультимедийное устройство (MTP)» и «Камера (PTP)» в параметре «Подключение к компьютеру через USB», который находится в меню «Настройки»> «Хранение»> «Подключение к компьютеру через USB». Повторное включение одного из MTP или PTP устранило проблему для меня.
Это поведение описано в разделе 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 объединяет операторы. и [])
Именно так работает EL.
$ {helper} оценивается как null, поэтому EL просто возвращает "" и не пытается вычислить остальную часть выражения.
Это своего рода удобная функция в некоторых случаях:
${myBean.property1.name}
будет работать, если даже если свойство property1 равно null, поэтому мне не нужно писать только для предотвращения NPE:
<c:if test="${not empty myBean.property1}">${myBean.property1.name}</c:if>