Grails - исключение NullPointerException, связанное с beforeInsert и логическим назначением - PullRequest
0 голосов
/ 29 сентября 2018

Мне нужно написать класс для регистрации значений, которые необходимо сравнить с максимальным значением, а затем присвоить результат истинности другой переменной.Рассмотрим следующий класс домена:

class SoManyBooleans{
    BigDecimal valueOne
    BigDecimal valueOneMaximum
    Boolean valueOneCorrect=true

    BigDecimal valueTwo
    BigDecimal valueTwoMaximum
    Boolean valueTwoCorrect=true

    BigDecimal valueThree
    BigDecimal valueThreeMaximum
    Boolean valueThreeCorrect=true
    .
    .
    .   
    BigDecimal valueNinetyNine
    BigDecimal valueNinetyNineMaximum
    Boolean valueNinetyNineCorrect=true

    Boolean allValuesCorrect

    static constraints = {
        valueOne()
        valueOneMaximum()
        valueOneCorrect()

        valueTwo()
        valueTwoMaximum()
        valueTwoCorrect()

        valueThree()
        valueThreeMaximum()
        valueThreeCorrect()     
        .
        .
        .   
        valueNinetyNine()
        valueNinetyNineMaximum()
        valueNinetyNineCorrect()

        allValuesCorrect()
    }

    static beforeInsert = { 
        this.valueOneCorrect=this.valueOne<=this.valueOneMaximum
        this.valueTwoCorrect=this.valueTwo<=this.valueTwoMaximum
        this.valueThreeCorrect=this.valueThree<=this.valueThreeMaximum
        .
        .
        .       
        this.valueNinetyNineCorrect=valueNinetyNine<=valueNinetyNineMaximum
        this.allValuesCorrect=this.valueOneCorrect&&this.valueTwoCorrect&&this.valueThreeCorrect&&...&&this.valueNinetyNineCorrect
    }
}

Строка this.allValuesCorrect=this.valueOneCorrect&&this.valueTwoCorrect&&this.valueThreeCorrect&&...&&this.valueNinetyNineCorrect, по-видимому, создает исключение NullPointerException, потому что когда я комментирую эту строку, процесс сохранения работает нормально.

На самом деле такие строки this.valueOneCorrect=this.valueOne<=this.valueOneMaximum фактически были написаны с использованием оператора if-else, потому что, похоже, операция производит null вместо false.

Помогите, пожалуйста.Заранее спасибо.

...