2012-03-26 10 views
9

मैं एक मान प्रदर्शित करने के लिए h: outputText का उपयोग कर रहा हूं। मैं प्रदर्शित मूल्य को सीमित करना चाहता हूं जैसे कि जब यह लंबाई में 50 से अधिक वर्णों से अधिक हो, तो इसे 50 वर्णों तक छोटा कर दिया जाता है और एक इलिप्सिस को छोटा मूल्य में जोड़ा जाता है। उदाहरण के लिए:जेएसएफ 2.0: एच के सीमित मूल्य: आउटपुट टेक्स्ट को वर्णों की एक विशिष्ट संख्या

This is some text that has been trun... 

मैं जानता हूँ कि मैं समर्थन की फलियों में इस लक्ष्य को हासिल कर सकते हैं, लेकिन अगर किसी को भी करने में कामयाब हो गया कोड जोड़ने के बिना किसी भी टैग है कि इस लक्ष्य को हासिल कर सकते हैं की पता था कि मैं सोच रहा था। एक सामान्य उपयोग मामले की तरह लगता है।

धन्यवाद।

उत्तर

4

कस्टम जेएसएफ कन्वर्टर्स का उपयोग करें जैसा कि "JSF for nonbelievers" में बताया गया है। Here's टेक्स्ट ट्रंकेशन कनवर्टर का एक उदाहरण।

+0

धन्यवाद। मुझे कोर जावा सर्वर फेस 3 संस्करण में एक अनुभाग भी मिला जो कस्टम कन्वर्टर्स और कनवर्टर टैग को कार्यान्वित करने से संबंधित है। –

23

आप JSF ईएल .. उपयोग कर सकते हैं उदाहरण के

<h:outputText value="#{bean.string.length() gt 50 ? bean.string.substring(0,47).concat('...') : bean.string}" /> 
+3

जहां आवश्यक हो वहां सभी जगहों पर एक ही तर्क को दोहराना मुश्किल है। इसके लिए एक सिंगल और पुन: प्रयोज्य कनवर्टर या यहां तक ​​कि एक ईएल फ़ंक्शन भी आसान है। जेएसएफ यूटिलिटी लाइब्रेरी ओमनीफेस के पास बहुत उद्देश्य के लिए 'संक्षिप्त:)' फ़ंक्शन है। – BalusC

+0

आप सही हैं .. लेकिन मान लीजिए कि मामला की विशेषता की स्ट्रिंग को फसल करना है। इस मामले में, कन्वर्टर्स का उपयोग करना सबसे अच्छा विकल्प नहीं है। – YAM

+3

यह ठीक है जब एक ईएल फ़ंक्शन उपयोगी होता है। – BalusC

3

BalusC उल्लेख किया है के लिए, OmniFace के of:abbreviate() आपकी समस्या के लिए एक अच्छा समाधान हो सकता है:

<p>Abbreviate a long string: #{of:abbreviate(string1, 20)}</p> 
+2

को प्रतिस्थापित करने के लिए यह निर्धारित करने के लिए प्रस्तुत किया गया है कि नाम का उपयोग करने के संदर्भ में, यह बहुत अच्छा काम करता है, नामस्थान आयात है: xmlns: of = "http://omnifaces.org/functions" –

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