使用Grails标签在特定条件下向HTML元素添加类

11

使用标签,您可以在GSP中执行此操作:

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

我真正想做的是添加第二个“class”,它根据'${someBean?.aCondition}'的值包含'display:none'或'display:block'属性。

最终的HTML应该如下:

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

如果${someBean?.aCondition}为真,那么该div的class将为'shownItem'。

相应的CSS代码:

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

有什么好的方法可以实现这个目标吗?

2个回答

20

很简单:

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

您可以在 HTML 属性中使用 ${} 块,没有问题,只要确保不在表达式块中使用任何双引号,因为那会导致混淆。


如何为此添加多个条件?是否可能? - Abdullah Al Noman
1
@Norman,${}中的代码块很棒,所以你可以这样做:${(someBean.value2 == 2 && someBean.value3 == 3) ? 'shownItem' : 'hiddenItem'},但是它变得混乱了。也许你可以在控制器中完成逻辑,并使用模型将结果传递到GSP中? - billjamesdev
针对每个条件,我想展示不同的类别,而不仅仅是在两个选项之间,这是否可行? - Abdullah Al Noman

6

如果你不想在某些情况下(比如自动对焦标签)显示该属性:

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

我们可以使用多个条件来实现这个吗? - Abdullah Al Noman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接