我目前正試圖在我的Grails應用程序的視圖上實現一個嵌套的if語句。我有下面的代碼首先檢查,如果一個值是真的,如果是的話,它呈現一些代碼(這工作)。如果這不是真的,它會落入else語句中,在這裏我需要一個嵌套的If語句來查看一個值並根據該值呈現不同的代碼片段。Grails如果聲明不起作用?
<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語句並在值「show」下面運行代碼。
<g:field type="text" name="typeField" value="" placeholder="${a?.type}"/>
我不明白爲什麼這不起作用,我可能錯過了一些愚蠢的東西,但真的很感激這方面的幫助。
在此先感謝
***編輯* ** *
所以我改變了我的代碼如下建議修剪任何whi TE-空間即使不應該有任何和我得到一個奇怪的錯誤:
<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>
有沒有人有任何想法,IM困惑什麼可回事:S必填
'.TYPE '是一個String實例,對嗎? –
是的,它是一個字符串 – user723858
如果'a'是虛假的,那麼沒有任何東西被渲染。添加' $ {a} '畢竟' ...' –