【问题标题】:Error evaluating expression: Cannot invoke method getAt() on null object评估表达式时出错:无法在空对象上调用方法 getAt()
【发布时间】:2012-10-07 08:23:49
【问题描述】:

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

class Question {

    List<Choice> choiceCollection;

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

}

为了满足我的需求,/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>

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

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

问题:我应该怎么做才能运行我的应用程序?

Grails 版本:2.1.1

【问题讨论】:

    标签: grails groovy gsp


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      而不是通过 [] 访问使用 getAt,然后?操作员将工作:

      choiceCollection?.getAt(1)?.description
      

      【讨论】:

      • 不错的一个(+1)。只是为了好奇:为什么getAt方法List API没有定义一个???
      • 谢谢。关于你的问题:groovy的java.util.List中有一个:groovy.codehaus.org/groovy-jdk/java/util/List.html
      • 我可以用 get 代替 getAt 吗?
      • 不幸的是,并非总是如此,但可能在这种特定情况下
      【解决方案3】:

      尝试仅对现有选择进行迭代:

      <g:each status="i" var="choice" in="${questionInstance.choiceCollection}">
          <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="${choice.description}"/>
          </div>
      </g:each>
      

      这应该可以解决问题...

      【讨论】:

        猜你喜欢
        • 2014-02-05
        • 2022-10-17
        • 2020-03-11
        • 1970-01-01
        • 1970-01-01
        • 2020-04-30
        • 1970-01-01
        相关资源
        最近更新 更多