Не похоже, что есть официальный способ сделать это прямо сейчас. Существует открытый запрос функции для добавления возможности для извлечения областей tmLanguage в позиции здесь: # 580
Существует одно потенциальное обходное решение, которое требует добавления зависимости к scope-info . Это расширение предоставляет собственный API, который может использовать другое расширение. Вот пример кода , отправленный автором в связанной проблеме:
import * as api from 'scope-info'
async function example(doc : vscode.TextDocument, pos: vscode.Position) {
const siExt = vscode.extensions.getExtension('siegebell.scope-info');
const si = await siExt.activate();
const t1 : api.Token = si.getScopeAt(doc, pos);
}
javax.el.PropertyNotFoundException: свойство 'foo' не найдено в типе com.example.Bean
blockquote>Это буквально означает, что упомянутый класс
com.example.Bean
не имеет общедоступный (нестатический!) метод getter для указанного свойстваfoo
. Обратите внимание, что само поле здесь не имеет значения!Имя открытого метода getter должно начинаться с
get
, за которым следует имя свойства, которое имеет заглавные буквы только в первой букве имени свойства, как вFoo
.public Foo getFoo() { return foo; }
Таким образом, вам необходимо убедиться, что существует метод получения, точно соответствующий имени свойства, и что метод
public
(неstatic
) и что метод не принимать любые аргументы и возвращать неvoid
. Если у вас есть один, и он по-прежнему не работает, то есть вероятность, что вы были заняты редактированием кода вперед и назад без прочной очистки сборки, восстановления кода и повторного развертывания / перезапуска приложения. Вы должны убедиться, что вы это сделали.Для свойств
boolean
(неBoolean
!) Имя метода getter должно начинаться сis
вместоget
.public boolean isFoo() { return foo; }
Независимо от типа, наличие самого поля
foo
, таким образом, не имеет значения. Он может иметь другое имя или быть полностью отсутствующим или даже бытьstatic
. Все ниже должно быть доступно${bean.foo}
.public Foo getFoo() { return bar; }
public Foo getFoo() { return new Foo("foo"); }
public Foo getFoo() { return FOO_CONSTANT; }
Понимаете, это не то, что подсчет, но сам метод геттера. Обратите внимание, что само имя свойства не должно быть капитализировано в EL. Другими словами,
${bean.Foo}
никогда не будет работать, это должно быть${bean.foo}
.См. Также:
- javax.el.PropertyNotFoundException: Свойство 'foo' не читается в виде java.lang.Boolean
- Как язык выражения Java решает логические атрибуты? (в JSF 1.2)
- Идентификация и решение javax.el.PropertyNotFoundException: Target Unreachable
- Выведенный код Facelets по-прежнему вызывает EL выражения типа # {bean.action ()} и вызывает javax.el.PropertyNotFoundException на # {bean.action}
Я считаю, что идентификаторы доступа не соответствуют соглашениям об именах бинов, и поэтому исключение выбрано. Они должны быть следующими:
public Integer getId() { return id; }
public void setId(Integer i){ id= i; }
Я столкнулся с аналогичным типом проблемы: Code Snippet:
<c:forEach items="${orderList}" var="xx">
${xx.id} <br>
</c:forEach>
После списка заказов было следующее: «$ {orderList}», из-за чего переменная xx скрывалась в String и не могла вызвать xx.id.
Поэтому убедитесь, что в пространстве. Иногда они играют решающую роль. : Р
EL интерпретирует ${class.name}
как описано - имя становится getName () в предположении, что вы используете явные или неявные методы генерации getter / seters
. Вы можете переопределить это поведение, явно указав имя как функция: ${class.name()}
Это вызывает имя функции () напрямую без изменений.
com.pool.app.domain.Pool
такого метода нет. Вы должны убедиться, что он имеет этот метод или убедиться, что вы ссылаетесь на правильное имя свойства в EL. – BalusC 20 December 2011 в 17:42getPoolQuestion()
вPool
и используйте${pool.poolQuestion.answer}
, как в вашем сообщении об ошибке? Тем не менее, я предлагаю пройти через базовый учебник / книгу и поместить все концепции отдельно, а не рассматривать это как одну вещь. Проблема дизайна модели в свою очередь не связана с JSP / JSTL / EL. – BalusC 20 December 2011 в 17:55