我目前正在尝试在我的 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 语句并运行值下方的代码,则显示“门”。
<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 语句,这会将“门”的值返回给视图:
<g:else>
${a?.type}
</g:else>
有没有人知道这里可能发生了什么,因为我很困惑:S 谢谢