2009-11-20 36 views
8

有了標籤,您可以在GSP做到這一點:添加類與Grails的標籤有條件的HTML元素

<g:if test="${someBean?.aCondition}"> 
    <div class="aSection"> 
    ... 
    </div> 
</g:if> 

我真正想要做的就是添加第二個「類」,要麼包含「顯示:none'或'display:block'attributes based on the value of'$ {someBean?.aCondition}'。

最終的HTML想這樣的:

<div class="aSection hiddenItem"> 
... 
</div> 

(股利將不得不爲它的類 'shownItem' 如果$ {someBean .aCondition?}爲true)

相應的CSS:

.shownItem 
{ 
    display: block; 
} 
.hiddenItem 
{ 
    display: none; 
} 

什麼是實現這一目標的好方法?

回答

18

足夠簡單:

<div class="aSection ${someBean?.aCondition ? 'shownItem':'hiddenItem'}"> 
... 
</div> 

您可以使用$ {}塊HTML屬性,沒有問題裏面,只是一定不要使用任何雙引號中的表達塊,因爲這混淆的東西。

+0

如何將多個條件添加到這個..是有可能 – 2017-08-02 09:58:44

+1

@Norman這是一個Groovy代碼塊在$ {}中,所以你可以這樣做:$ {(someBean.value2 == 2 && someBean.value3 == 3)? 'shownItem':'hiddenItem'},但它變得混亂。也許你可以在控制器中執行該邏輯,並使用該模型將結果傳遞給GSP? – billjamesdev 2017-08-03 15:27:11

+0

爲每個條件我想顯示不同的類不完全只有兩個選項之間可以做到這一點? – 2017-08-03 15:44:52

5

或者,如果你不希望在所有的一些顯示的屬性(比如說用於自動對焦標籤)條件:

<input name="email" type="text" class="input-small" placeholder="Email" ${!flash.email ? 'autofocus="autofocus"':''} value="${flash.email}"> 
+0

我們可以爲此使用多個條件 – 2017-08-02 09:57:53