Я просматривал справочник Spring Framework, в частности раздел «Конфигурация парсера», в котором говорится:
Объект конфигурации управляет поведением некоторых выражений компоненты. Например, если вы индексируете коллекцию и элемент по указанному индексу имеет значение NULL, SpEL может автоматически создать этот элемент. Это полезно при использовании выражений, состоящих из цепочки ссылок на свойства.
Экстракт ссылается на свойство autoGrowNullReferences, и, похоже, это так. предполагают, что если элемент по указанному индексу коллекции имеет значение NULL, SpEL заменит его инициализированным экземпляром (при условии, что его класс предоставляет конструктор по умолчанию).
Однако , если я добавлю ноль в поле List объекта MyBean, а затем ссылаться на первый элемент коллекции, SpEL выдает исключение SpelEvaluationException с сообщением об ошибке:
EL1007E: свойство или поле «id» не найдено по нулевому значению.
Несмотря на то, что описано в документации , SpEL нет замените нулевой элемент экземпляром AnotherBean по умолчанию, даже если класс предлагает конструктор без аргументов. Почему SpEL ведет себя так?
@Data
@NoArgsConstructor
@AllArgsConstructor
public class AnotherBean {
private int id;
}
public class MyBean {
public List list = new ArrayList();
}
public class Main {
public static void main(String[] args) {
MyBean myBean = new MyBean();
myBean.list.add(null);
// enable auto grow null references
// disable auto grow collections
SpelParserConfiguration config = new SpelParserConfiguration(true, false);
// since AnotherBean has a default constructor,
// the null element should be replaced with a default instance
ExpressionParser parser = new SpelExpressionParser(config);
Expression expression = parser.parseExpression("list[0].id");
// Instead throws a SpelEvaluationException...
Integer i = expression.getValue(myBean, Integer.class);
System.out.println(i);
}
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... ll-element
Spel Auto Grow Null ссылки бросает SpelevaluationException с нулевым элементом ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как сделать так, чтобы столбец .flex-grow не расширялся для размещения его содержимого?
Anonymous » » в форуме CSS - 0 Ответы
- 18 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Почему «оправдать контент: reten» требует `flex-grow 'для расширения входных элементов
Anonymous » » в форуме CSS - 0 Ответы
- 17 Просмотры
-
Последнее сообщение Anonymous
-