【问题标题】:GSP: check if model (variable) is empty not workingGSP:检查模型(变量)是否为空不工作
【发布时间】:2011-09-21 06:39:32
【问题描述】:

我是 grails (1.3.7) 的新手,我正试图让某些东西发挥作用:

在我的控制器中,我返回了一些我想在我的 gsp 中访问的列表。访问作品,但我只想在它们不为空时访问它们。检查列表是否为空不起作用。

这是我的控制器返回的内容:

return new ModelAndView("/questions/questions", [ questionsList101 : allQuestions101, questionsList102 : allQuestions102, ... ])

allQuestions-objects 是“def allQuestions..”,包含 Questions-Objects (Database-Object)

现在我在我的 gsp 上尝试以下操作:

<g:if test="${!empty questionsList101}">  101:<br/>
<g:each in="${questionsList101}" var="elem" status="i">
  <g:checkBox name="${questionsList101[i].id}" value="${questionsList101[i].id}"/>${questionsList101[i].id}<br/>
</g:each>
<br/>
</g:if>

循环正常工作,但检查空虚不正常。我试过“not empty”,“!empty”,......不知道怎么了!任何帮助都将不胜感激! :-)

【问题讨论】:

    标签: grails groovy model gsp


    【解决方案1】:

    做到这一点的“最时髦”的方法是

    <g:if test="${questionList101}">
    

    在 Groovy 中,空对象和空集合被强制为 false。请在此处查看有关 Groovy 真相的文档:http://groovy-lang.org/semantics.html#Groovy-Truth

    【讨论】:

      【解决方案2】:

      在 GSP 中,您可以在 ${} 表达式中获得完整的常规支持。如果需要,您可以对对象进行适当的方法调用。试试这个:

      <g:if test="${questionsList101 != null && !questionsList101.isEmpty()}">
      

      【讨论】:

      • 我尝试了第一个,它只适用于非空列表 - 有趣。否则,我会收到以下错误消息:处理 GroovyPageView 时出错:执行标签时出错
        :无法在空对象上调用方法 isEmpty() :-) 其他方法相同。如果对象为空,我无法调用它们 - 非常有趣....
      • 看起来你只需要一个空检查。我会更新我的答案。
      • 嗯,如果您使用的是 Grails,那么用 Groovy 的方式来编写它怎么样? ${! questionsList101?.isEmpty()}(注意空检查?)
      • 谢谢。我知道有更好的方法,但我有点脑子有问题,我想我应该给他一些快速奏效的东西。
      • 然而,经过进一步调查,${! questionsList101?.isEmpty()} 似乎没有处理空情况。我现在要把它放回不那么时髦的方式......
      猜你喜欢
      • 2012-02-05
      • 2017-12-12
      • 2011-05-20
      • 2011-03-20
      • 2021-05-12
      • 1970-01-01
      相关资源
      最近更新 更多