Spel Auto Grow Null ссылки бросает SpelevaluationException с нулевым элементомJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Spel Auto Grow Null ссылки бросает SpelevaluationException с нулевым элементом

Сообщение Anonymous »

Я просматривал справочник 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как заставить столбец flex-direction, содержащий широкий контент, соблюдать flex-grow и flex-basis?
    Anonymous » » в форуме CSS
    0 Ответы
    93 Просмотры
    Последнее сообщение Anonymous
  • Как сделать так, чтобы столбец .flex-grow не расширялся для размещения его содержимого?
    Anonymous » » в форуме CSS
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Упрощение функции ArrayList Grow(int minCapacity)
    Anonymous » » в форуме JAVA
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • Как заставить Flex Grow работать с областью прокрутки Shadcn?
    Anonymous » » в форуме CSS
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Почему «оправдать контент: reten» требует `flex-grow 'для расширения входных элементов
    Anonymous » » в форуме CSS
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»