2009-11-20 14 views
8

टैग के साथ, आप एक जीएसपी में ऐसा कर सकते हैं:grails टैग के साथ सशर्त तत्व HTML करने के लिए एक वर्ग को जोड़ने

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

क्या मैं सच में करना चाहते हैं एक दूसरे 'क्लास' को जोड़ने है कि या तो 'प्रदर्शन होता है : '$ {someBean? .aCondition}' के मान पर आधारित कोई भी 'या' डिस्प्ले: ब्लॉक 'विशेषताएँ नहीं।

अंतिम एचटीएमएल यह चाहते हैं:

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

(यदि $ {? SomeBean .aCondition} सच है div अपने वर्ग के लिए 'shownItem' के लिए होता है)

इसी सीएसएस:

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

इसे प्राप्त करने का एक अच्छा तरीका क्या है?

उत्तर

18

काफी आसान:

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

कि के रूप में बातें confuses आप $ {} ब्लॉक एचटीएमएल विशेषताओं, कोई समस्या नहीं के अंदर उपयोग कर सकते हैं, बस अपने अभिव्यक्ति ब्लॉक में किसी भी डबल उद्धरण चिह्नों का उपयोग न करना सुनिश्चित करें।

+0

यह कैसे करने के लिए कई शर्तों को जोड़ने के लिए .. यह संभव –

+1

@Norman है कि एक है $ {} में groovy कोड ब्लॉक, तो हाँ, आप कर सकते हैं: $ {(someBean.value2 == 2 && someBean.value3 == 3)? 'दिखाया गया': 'छुपे हुए इटिम'}, लेकिन यह गन्दा हो रहा है। शायद आप नियंत्रक में उस तर्क को कर सकते हैं, और मॉडल का उपयोग कर जीएसपी में परिणाम पास कर सकते हैं? प्रत्येक स्थिति के लिए – billjamesdev

+0

मैं अलग-अलग वर्ग दिखाना चाहता हूं न कि केवल दो विकल्प के बीच ही किया जा सकता है? –

5

या यदि आप विशेषता कुछ पर सभी पर प्रदर्शित नहीं करना चाहते हैं (एक ऑटोफोकस टैग के लिए कहते हैं) की हालत:

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

हम इसके लिए कई स्थितियों का उपयोग कर सकते हैं –

संबंधित मुद्दे