2009-10-02 21 views
8

एक freemarker टेम्पलेट में मुझे लगता है कि इस तरह की स्ट्रिंग के लिए एक बूलियन चर का विस्तार करना चाहते:स्ट्रिंग के लिए एक बूलियन चर का विस्तार करें "सही" या "गलत"

<#assign booleanVar = "test".isEmpty() /> 
state: ${booleanVar} <#-- this throws an exception! --> 

यह है कि मैं क्या आउटपुट के रूप में प्राप्त करना चाहते है :

state: false 

एक ही रास्ता मैं अब तक इस लक्ष्य तक पहुंचने के लिए मिल गया है:

state: <#if booleanVar>true<#else>false</#if> 

वहाँ यह करने के लिए एक आसान तरीका है?

उत्तर

20
booleanVar?string("true", "false") 

हालांकि true/false is default, तो

booleanVar?string 

ठीक काम करना चाहिए।

+0

यदि मैं ऐसा करता हूं तो मुझे मिलता है: "freemarker.core.InvalidReferenceException: अभिव्यक्ति बूलियन वर् $ स्ट्रिंग अपरिभाषित है"। – tangens

+0

मैंने उस लिंक को फिर से पढ़ा ... $ को बदल दिया? उदाहरण में। मुझे फ्रीमार्कर नहीं पता :) – tsilb

+1

फ्रीमार्कर 2.3.20 से शुरू, आपको '$ {booleanVar? C}' का उपयोग करना चाहिए। बस '$ {booleanVar? String} लिखना खतरनाक है, क्योंकि डिफ़ॉल्ट प्रारूप बदला जा सकता है। अधिक जानकारी के लिए मेरा जवाब देखें। – ddekany

4

फ्रीमार्कर 2.3.20 से शुरू करना, यदि आप सच/गलत प्रिंट करना चाहते हैं (क्योंकि आप जावास्क्रिप्ट या ऐसे उत्पन्न कर रहे हैं), ${booleanVar?c} (?c "कंप्यूटर प्रारूप" के लिए भी लिखें, संख्याओं के लिए भी उपयोग किया जाता है)। किसी yes,no या कुछ और करने के लिए boolean_format सेटिंग सेट के बाद से कर सकते हैं ... ${booleanVar?string}, उस के लिए खतरनाक है (btw, उस मामले ${booleanVar} में 2.3.20 में भी काम करेगा, और आप yes और no मिलता है।)

देखें: http://freemarker.org/docs/ref_builtins_boolean.html#ref_builtin_c_boolean