2010-07-26 8 views
38

मुझे outputText का उपयोग करके एक लाइन ब्रेक प्रस्तुत करने की आवश्यकता है ताकि मैं rendered का उपयोग कर सकूं। मैंoutputText के साथ लाइन ब्रेक कैसे प्रदर्शित करें?

<h:outputText value="<br/>" escape="false" /> 

की कोशिश की, लेकिन यह अपवाद

The value of attribute "value" associated with an element type "null" must not contain the '<' character. 

उत्तर

87

यह वास्तव में फेसलेट्स के बाद मान्य नहीं है क्योंकि यह एक्सएमएल में वाक्य रचनात्मक रूप से अमान्य है। आपको XML विशेष वर्णों जैसे <, > और मैन्युअल रूप से बचने की आवश्यकता होगी।

<h:outputText value="&lt;br/&gt;" escape="false" /> 

आप फिर भी सिर्फ एक <h:outputText> की आवश्यकता के बिना टेम्पलेट पाठ में <br/> फेंकना कर सकते हैं।

<br/> 

इसे सशर्त रूप से प्रस्तुत करने के लिए, उदाहरण के लिए इसे <ui:fragment> में लपेटें।

<ui:fragment rendered="#{bean.rendered}"><br /></ui:fragment> 

एक <h:panelGroup> यह वैसे भी एचटीएमएल के लिए कुछ भी उत्सर्जन नहीं के रूप में भी मान्य है।

<h:panelGroup rendered="#{bean.rendered}"><br /></h:panelGroup> 
+0

इस प्रकार तुम ऐसा कैसे कर होगा जब गतिशील रूप से एक में एक 'HtmlOutputText' जोड़ने सेम Getter विधि लिखना चाहिए प्रबंधित बीन? मैंने 'HtmlOutputText लाइनबैक = नया HtmlOutputText() की कोशिश की; lineBreak.setValue ("< br/>" और "
"); '(जाहिर है कि उसी समय नहीं) लेकिन न तो काम किया, उन्होंने आसानी से टेक्स्ट को आउटपुट किया, ब्रेक – Austin

+1

@ ऑस्टिन: जाहिर है आप कॉलिंग भूल गए' setEscape (गलत) '। – BalusC

+0

सुनिश्चित करें कि आपको किसी भी नई पुस्तक की आवश्यकता नहीं है? =) – Austin

0

बनायी गई हो एक संसाधन बंडल के अंदर "<br />" डालने की कोशिश कर सकते हैं और फिर उस संसाधन बंडल से मूल्य मिलता है।

3

JSF पृष्ठ

<h:outputText value="#{car.crg}" escape="false" style="white-space: pre-wrap;word-wrap: break-word; " /> 

भागनेfalse हो सकता है और के रूप में

public String getCrg() { 
     return crg.replace("<br/>", "&lt;br /&gt;"); 
     //return crg; 
    } 
संबंधित मुद्दे