评估表达式时出错:无法在null对象上调用方法getAt()

Art*_*ald 3 grails groovy gsp

我有一个如下设计的问题域模型

class Question {

    List<Choice> choiceCollection;

    static hasMany = [choiceCollection:Choice]
    static mappping = {
        choiceCollection(joinTable:false)
    }

}
Run Code Online (Sandbox Code Playgroud)

为了满足我的需求,已经自定义了/grails-app/views/question/create.gsp,如下所示

create.gsp

<g:each var="i" in="${(0..4)}">
    <div class="fieldcontain  required">
    <label for="description">
            Option ${i + 1}.
            <span class="required-indicator">*</span>
        </label>
        <g:textArea name="choiceCollection[${i}].description" cols="40" rows="5" maxlength="2000" value="${questionInstance?.choiceCollection[i]?.description}"/>
    </div>
</g:each>
Run Code Online (Sandbox Code Playgroud)

当我尝试访问创建视图时,我收到以下错误

Error evaluating expression [questionInstance?.choiceCollection[i]?.description]: Cannot invoke method getAt() on null object
Run Code Online (Sandbox Code Playgroud)

问题:如何运行我的应用程序?

Grails版本:2.1.1

小智 9

我在尝试使用Java 8运行grails(2.2.4)时发现了这个错误.原因并不是很明显.它被埋在某处grails.util.BuildSettings.groovy

当我恢复到java 1.7时,消息消失了.


Chr*_*ris 6

而不是通过[]使用getAt访问,那么?运营商将工作:

choiceCollection?.getAt(1)?.description
Run Code Online (Sandbox Code Playgroud)