Spring Метод Уровень безопасности Получение нуля Свойство EL1007E: Свойство или поле 'цена' не могут быть найдены в нуле - PullRequest
0 голосов
/ 24 сентября 2019

Класс моей модели:

@Data
public class Beer {
    public Beer(int i, String string, float d) {
         this.beerId = i;
         this.beerName = string;
         this.price = d;
    }
    public Beer() {
    }
    private int beerId;
    private String beerName;
    private float price;
}

И интерфейс службы

public interface IBeerService {

    @Secured("ROLE_ADMIN")
    @PreAuthorize("#beer.price > 0.0f")
    Beer add(Beer beer);

    @Secured("ROLE_USER")
    @RolesAllowed("ROLE_USER")
    List<Beer> getAll();

}

Интерфейс реализован, как показано ниже.

@Service
public class BeerService implements IBeerService {
    private List<Beer> beerRepository = new ArrayList<>();

    @Override
    public Beer add(Beer beerToAdd) {
        if(!beerRepository.contains(beerToAdd)) {
            beerToAdd.setBeerId(this.beerRepository.size()+1);
            this.beerRepository.add(beerToAdd);
        }
        return beerToAdd;
    }

    @Override
    public List<Beer> getAll() {
        return beerRepository;
    }
}

В контроллереЯ могу видеть объект, который не является нулевым, в отладчике.Я получаю ошибку как

org.springframework.expression.spel.SpelEvaluationException: EL1007E: Property or field 'price' cannot be found on null
    at org.springframework.expression.spel.ast.PropertyOrFieldReference.readProperty(PropertyOrFieldReference.java:213) ~[spring-expression-5.1.9.RELEASE.jar:5.1.9.RELEASE]
    at org.springframework.expression.spel.ast.PropertyOrFieldReference.getValueInternal(PropertyOrFieldReference.java:104) ~[spring-expression-5.1.9.RELEASE.jar:5.1.9.RELEASE]
...