2012-04-10 12 views
6

Ich habe ein benutzerdefiniertes Feld namens Current_Address__c, das vom Datatype Textarea ist.Newline-Zeichen im Textbereich

Ich muss dieses Feld im folgenden Format ausfüllen. dh ein Newline-Zeichen nach der Straße und ein weiteres Zeilenumbruch nach dem zip.

Straße Stadt Zustand Zip Land

Die Werte der Stadt State Postleitzahl Staat usw. werden von Kontaktobjekt entnommen sind. Ich möchte das nicht als Formelfeld verwenden. Also muss ich es in meinem Controller auffüllen und auf meiner VF-Seite anzeigen. Ich hatte auch verwendet \ n anstelle von \ n

Ich versuche, mit Hilfe des unten stehenden Codes

this.customobj.Current_Address__c = currentStreet + '\\n ' + currentCity + ' ' + currentState + ' ' + currentZIP + '\\n ' + currentCountry ; 

eine neue Zeile Zeichen hinzuzufügen.

Es zeigt noch das Feld in einer Zeile anstelle von 3 Linien

EDIT

ich diese Arbeit bekam den folgenden Code verwenden. Ich würde die Antwort von mathews akzeptieren, da dies mit outputfield funktionieren würde.

   currentAddress = currentStreet; 
      currentAddress += '\r\n'; 
      currentAddress += currentCity + + ' ' + currentState + ' ' + currentZIP ; 
      currentAddress += '\r\n'; 
      currentAddress += currentCountry; 

Dies funktioniert nur, wenn Sie + = verwenden. nicht sicher, warum dies geschieht

Antwort

7

Ich glaube, ich das Problem gefunden, haben Sie zwei Escape-Zeichen Schrägstriche (\\n), aber nur eine ist erforderlich, da der Schrägstrich in \n in diesem Zusammenhang nicht entkommen werden muss.

Außerdem speichert Salesforce eine neue Zeile als \r\n. Versuchen Sie folgendes:

this.customobj.Current_Address__c 
    = currentStreet + ' \r\n' 
    + currentCity + ' ' + currentState + ' ' + currentZIP + ' \r\n' 
    + currentCountry; 

Diese Methode funktioniert, wenn ein mit <apex:outputfield> mit einem SObject Feld.

<apex:outputtext value="{!myCustomSObject__c.Address__c}"/> 

Wenn Sie eine andere Komponente Visual verwenden, wird es nicht funktionieren. Visualforce rendert die neue Zeile in HTML, wenn eine Komponente <apex:outputtext> verwendet, aber HTML ignoriert neue Zeilen. Wenn Sie ein <br/>-Tag verwenden, rendert Visualforce es als &lt;br/&gt;.

Die beste Lösung, die ich für das Rendern einer Variablen mit neuen Zeilen (anstatt eines sObject-Felds) entwickeln könnte, ist die Verwendung eines deaktivierten <apex:inputtextarea>.

<apex:inputtextarea value="{!myAddress}" disabled="true" readonly="true"> 
</apex:inputtextarea> 
+0

Im mit dem gleichen Problem. Ich versuchte \ r \ n, \ n, \\ n und sogar
und nicht von ihnen arbeitete! – raym0nd

+0

Welche Art von Tag verwenden Sie, um die Daten anzuzeigen? '' hat für mich funktioniert. –

+0

raym0nd

3

Vor kurzem habe ich das gleiche Problem hatte ich die neuen Linien in einer Die Lösung, die ich fand, war das, es ist ein wenig schwierig, aber es funktioniert auf Reder wollte:

<apex:outputText value="{!SUBSTITUTE(JSENCODE(textVariableThanContainsNewLines), '\\n', '<br/>')}" escape="false"/> 
0

Versuchen Sie, diese :

-Controller

public List<String> getLetterLines() { 
    if (letterBody == null) { 
     return new List<String>(); 
    } 
    return letterBody.split('\n'); 
} 

VF Seite:

<apex:repeat value="{!letterLines}" var="letterLine"> 
    <apex:outputText value="{!letterLine}" /><br /> 
</apex:repeat> 

Viel Spaß!

-2

value = "Bemerkungen: {! SUBSTITUTE (JSENCODE (textVariableThanContainsNewLines), '\ r \ n', '
')}"

+2

Einige Dinge, über die Sie nachdenken sollten, bevor Sie antworten: 1) Ihre Antwort sollte ** neue Informationen zum Beitrag hinzufügen, nicht nur die eines anderen, 2) Sie sollten erklären, warum/wie die Antwort das Problem löst, und 3) Sie sollten formatiere deine Antwort schön (Code in Codeblöcke einfügen). – Ajean