2010-03-26 14 views
5

सेल्सफोर्स में, यदि मैं विजुअलफोर्स पेज में टेक्स्ट फ़ील्ड को बाध्य कर रहा हूं, तो टेक्स्ट फ़ील्ड में कैरिज रिटर्न को HTML में कनवर्ट करने का एक अच्छा तरीका क्या है <br/> टैग?विजुअलफोर्स: एक लंबे टेक्स्ट फ़ील्ड में कैरिज रिटर्न को एचटीएमएल लाइन-ब्रेक में कनवर्ट करें

उदा। कुछ इस तरह से शुरू:

<apex:page standardController="Case"> 
    <apex:pageBlock title="Test"> 
     <p>{!case.Description}</p> 
    </apex:pageBlock>     
    <apex:detail relatedList="false" /> 
</apex:page> 

... अगर विवरण कैरिएज रिटर्न बहुत से लंबा है, मैं इसे कैसे एचटीएमएल-ify करते हैं?

(मुझे लगता है कि यह एक काफी आसान सवाल है, और मुझे यकीन है कि मैं इसे गूगल सकता है, लेकिन Salesforce समुदाय यहाँ पर जा रहा करने के लिए मैं समझ हम कुछ आसान सवालों की जरूरत है हूँ।)

संपादित करें:

उत्तर

4

इस प्रयास करें (बाउंटी कोशिश करते हैं और उत्पन्न कुछ उत्तेजना को जोड़ा गया):

<apex:outputField value="{!case.Description}"/> 

का उपयोग उत्पादन क्षेत्रों स्वतः स्वरूपण को बनाए रखेगा।

+0

यह मेरे लिए काम नहीं करता है। जब मैं आउटपुट फ़ील्ड का उपयोग करता हूं, तो कैरिज रिटर्न परिवर्तित नहीं होते हैं। – codeulike

+0

लेकिन ऐसा लगता है कि यह अन्य लोगों के लिए काम करता है! – codeulike

0

क्या आपने outputText का उपयोग करने का प्रयास किया है?

अगर है कि मेरे विचार यहाँ के लिए वोट काम नहीं करता: https://sites.secure.force.com/ideaexchange/ideaView?id=08730000000H4XDAA0 जब एक पृष्ठ पर JSON वापस जाने के लिए कोशिश कर रहा है मैं एक ही मुद्दा है के रूप में।

अन्य लोगों को भी इस विचार https://sites.secure.force.com/ideaexchange/apex/ideaview?id=08730000000BrhEAAS

+0

outputText और outputField मेरे लिए काम नहीं किया – codeulike

3

मैं अंत में कुछ घना कोड के साथ यह लक्ष्य प्राप्त करना चाहते हैं।

कस्टम नियंत्रक में, विधियों को जोड़ने <br/> टैग के साथ खोज मैन्युअल के बाद क्षेत्र लौट सकते हैं और क्षेत्र में पंक्ति विराम की जगह और जगह के लिए उन्हें: पेज में फिर

public string getCaseDescriptionFormatted() 
{ 
    Case c = this.loadCaseFromDatabaseOrWhatever(); 
    return lineBreaks(c.Description); 
} 

private string lineBreaks(string inText) 
{ 
    if (inText == null) 
     return ''; 
    else 
     return inText.replaceAll('<','(').replaceAll('>',')').replaceAll('\n','<br/>'); 
} 

, का उपयोग सुप्रीम: साथ outputText भागने = "false":

<apex:outputText value="{!CaseDescriptionFormatted}" escape="false" /> 

ध्यान दें कि = बचने "गलत" html टैग भागने से VisualForce को रोकने के लिए आवश्यक है। इसका मतलब यह भी है कि आप खुद को स्क्रिप्टिंग-हमलों के लिए खोल देते हैं जो आंकड़ों में अनुमानित रूप से एम्बेडेड हो सकते हैं। यह है कि नियंत्रक में lineBreaks() एफएन भी < और > वर्णों को प्रतिस्थापित करता है।

(स्ट्रिंग सुरक्षित बनाने के लिए एक बेहतर तरीका हो सकता है, सुझावों का स्वागत)

0

आप की तरह कुछ की कोशिश कर सकते:

{!substitute(Case.Description, '\n', '<br/>')} 
0

मेरे लिए, TehNrd इसे किसी न किसी - मैं प्रदर्शित करने के लिए कोशिश कर रहा था एक VisualForce अधिसूचना ई-मेल टेम्पलेट में एक केस "विवरण", और सभी सीआर/एलएफ गायब हो गए और रेखाएं/पैराग्राफ एक साथ चल रहे थे। इसे आउटपुट फ़ील्ड मान को पूरी तरह से ठीक कर दिया गया है।

1

ऊपर दिए गए तेहर ने मेरे लिए प्रश्न का उत्तर दिया।

मैं खातों के लिए सामान्य उदाहरण के समान मामलों के एक टैबड दृश्य को विकसित कर रहा हूं।जब मामले की टिप्पणियां दिखाने की बात आती है तो आप उन्हें किसी संबंधित सूची में नहीं डाल सकते हैं और इसके बजाय आपको उन्हें हाथ से प्रारूपित करने की आवश्यकता होती है। मानक शीर्ष पेजब्लॉकटेबल परिणामों का उपयोग कसकर पैक की गई तालिका में किया जाता है जिसे उपयोगकर्ताओं द्वारा नहीं पढ़ा जा सकता है, इसलिए हमें अधिक कोड कोडिंग करना होगा। यह दृष्टिकोण मुझे टेबल सामग्री को प्रारूपित करने के लिए सीएसएस का उपयोग करने की अनुमति देता है। लेकिन समस्या लाइन ब्रेक और प्रारूपित ईमेल संदेशों के साथ केस टिप्पणियों को स्वरूपित कर रही थी। TehNrd का जवाब पूरी तरह से काम किया!

दूसरों के लिए यहां टिप्पणी संपादित करने के लिए एक क्रिया के साथ स्वरूपित केसकॉममेंट के साथ एक टैब प्रदर्शित करने के लिए कोड है।

<apex:tab label="Comments" name="Comments" id="tabComments"> 
    <apex:form > 
     <apex:pageBlock id="commentsPageBlock"> 
      <apex:pageBlockButtons location="top"> 
       <apex:commandButton value="Toggle Sort" action="{!RequeryComments}" id="theButton" rerender="commentsPageBlock"></apex:commandButton> 
      </apex:pageBlockButtons> 
      <table border="0" class="commentsTable">  
      <tr> 
       <th class="commentsActionColumn">Action</th> 
       <th class="commentBodyClass">Comments</th> 
      </tr> 
      <!-- get the case comments from the controller --> 
      <apex:repeat value="{!comments}" var="c"> 
       <tr> 
       <td class="commentsActionColumn"> 
       <!-- open the case comment for edit --> 
       <apex:outputLink title="" value="/{!c.id}/e?parent_id={!c.parentId}&retURL=/apex/{!$CurrentPage.Name}%3Fid={!case.id}" style="font-weight:bold">Edit</apex:outputLink> 
       </td> 
       <td> 
       <!-- display the case comment formatted using the apex outputField --> 
       <div class="commentTdClass"> 
       <apex:outputField value="{!c.commentbody}"></apex:outputField> 
       </div> 
       </td> 
       </tr> 
      </apex:repeat> 
      </table> 
     </apex:pageBlock> 
    </apex:form> 
</apex:tab> 
+0

अद्यतन: संपादन कार्य केवल तभी काम करता है जब वर्तमान उपयोगकर्ता केस टिप्पणी का मालिक हो। मैं एक समाधान पर काम कर रहा हूं और अपडेट करूँगा। – Bryan

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