2009-11-20 29 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