2013-07-08 130 views
0

我目前正試圖在我的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必填

+1

'.TYPE '是一個String實例,對嗎? –

+0

是的,它是一個字符串 – user723858

+0

如果'a'是虛假的,那麼沒有任何東西被渲染。添加' $ {a}'畢竟' ...' –

回答

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

+0

感謝您的幫助 – user723858

+0

實際上doinf完全測試這不工作:S – user723858

+0

所以,現在我有了elseif,然後將最後一個更改爲其他人,並將其放入測試$ {a?.type},並返回值「Door 「所以不明白爲什麼它不屬於第一個陳述? – user723858