我目前正在尝试在Grails应用程序中的视图上实现嵌套的if语句。我有下面的代码,首先检查一个值是否为真,如果是,它呈现一些代码(这是有效的)。然后,如果这不是真的,它将落入else语句,在这里我需要一个嵌套的If语句来查看一个值并根据该值呈现不同的代码片段。
<g:if test="${a?.staticValue == true}">
<g:field type="text" name="staticText" readonly="true" value="${a?.data}"/>
</g:if>
<g:else>
<g:if test="${a?.type == 'Door'}">
<g:field type="text" name="doorField" value="" placeholder="${a?.wood}"/>
</g:if>
<g:elseif test="${a?.type == 'Floor'}">
<g:field type="text" name="floorField" value="" placeholder="${a?.laminate}"/>
</g:elseif>
<g:elseif test="${a?.type == 'Window'}">
<g:field type="text" name="windowField" value="" placeholder="${a?.blinds}"/>
</g:elseif>
</g:else>
在else语句中没有呈现任何内容,只显示第一个框,因此嵌套的if语句由于某种原因不起作用,我不明白为什么。如果我删除底部的if语句并运行下面的代码显示“Door”。
<g:field type="text" name="typeField" value="" placeholder="${a?.type}"/>
我不明白为什么这不起作用,我可能会遗漏一些愚蠢的东西,但我真的很感激这方面的帮助。
提前致谢
的 的 *** 修改的 * ** *
所以我已按照下面的建议更改了我的代码以修剪任何空格,即使不应该有任何空格,我也会遇到一个奇怪的错误:
<g:if test="${a?.type.trim().equals('Door')}">
以下错误似乎表明没有数据被提取:
No signature of method: com.smstool.Dynam$VarType.trim() is applicable for argument types: () values: []
这很奇怪,因为我已将此else语句添加到结尾,并将“Door”的值返回到视图:
<g:else>
${a?.type}
</g:else>
有没有人有任何想法,因为我很困惑:S谢谢
答案 0 :(得分:0)
尝试:如果?.staticValue是String尝试旧的java方式:
<g:if test="${a?.staticValue}">
<g:field type="text" name="staticText" readonly="true" value="${a?.data}"/>
</g:if>
<g:else>
<g:if test="${a?.type.toString().equals('Door')}">
<g:field type="text" name="doorField" value="" placeholder="${a?.wood}"/>
</g:if>
<g:elseif test="${a?.type.equals('Floor')}">
<g:field type="text" name="floorField" value="" placeholder="${a?.laminate}"/>
</g:elseif>
<g:elseif test="${a?.type.equals('Window')}">
<g:field type="text" name="windowField" value="" placeholder="${a?.blinds}"/>
</g:elseif>
</g:else>
表示不区分大小写:
等于可以更改为: equalsIgnoreCase