Grails 中 GSP 中的 if 语句

Posted

技术标签:

【中文标题】Grails 中 GSP 中的 if 语句【英文标题】:if statements in a GSP in Grails 【发布时间】:2012-08-25 09:43:09 【问题描述】:

我在控制器中调用索引方法

def index() 
    childInstance = Child.get(params.id)

    if(childInstance)
        System.out.println("CHILD" + childInstance.firstname)

        def messages = currentUserTimeline()
            [profileMessages: messages,childInstance:childInstance]
     else 
        def messages = currentUserTimeline()
            [profileMessages: messages]

        System.out.println("ALL")
    

在我的gsp页面中

$childInstance.firstname

如果我传递一个 childInstance 这很好,但如果我不传递一个空指针,我会得到 500,有没有办法我可以在 gsp 中执行 if 语句,这样我就可以做到这一点

if(childInstance)
   $childInstance.firstname
 else 
   All

【问题讨论】:

【参考方案1】:

您可以使用g:ifg:elseifg:else

<g:if test="$name == 'roberto'">
    Hello Roberto!
</g:if>
<g:elseif test="$name == 'olga'">
    Hello Olga!
</g:elseif>
<g:else>
    Hello unknown person!
</g:else>

【讨论】:

【参考方案2】:

&lt;g:if&gt; 更简洁的解决方案是使用安全取消引用运算符?

$childInstance?.firstName

如果childInstance 不为空,则显示名字,如果为空,则不显示任何内容。

【讨论】:

【参考方案3】:
<g:if test="$ childInstance ">
    $ childInstance.firstName 
</g:if>

【讨论】:

以上是关于Grails 中 GSP 中的 if 语句的主要内容,如果未能解决你的问题,请参考以下文章

Grails:在 gsp 中显示创建的图像

如何从 grails 视图文件夹中的 create.gsp 表单中隐藏几个字段?

Grails sitemesh 是不是有任何解决方法不支持带有开放 HTML 正文标记的 if 语句

从 grails 中的 gsp 页面进行 ajax 调用

比较 Grails GSP 中的字符串

如何将部分模板加载到grails中的div中