GSP:检查模型(变量)是不是为空不工作

Posted

技术标签:

【中文标题】GSP:检查模型(变量)是不是为空不工作【英文标题】: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”,......不知道怎么了!任何帮助都将不胜感激! :-)

【问题讨论】:

【参考方案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() 似乎没有处理空情况。我现在要把它放回不那么时髦的方式......

以上是关于GSP:检查模型(变量)是不是为空不工作的主要内容,如果未能解决你的问题,请参考以下文章

如何在剃刀视图中检查模型字符串属性是不是为空

访问查询 - 如果字段为空不输出?

mysql查找字段空不为空的方法总结

FluentValidation:检查两个字段之一是不是为空

jackson实体为NULL或者为空不显示

使用 MVC Razor 语法检查视图模型属性在 Javascript 中是不是具有值