2012-04-10 19 views
6

Ho un campo personalizzato chiamato Current_Address__c che è di tipo di testo datatype.carattere di nuova riga nell'area di testo

Devo compilare questo campo nel formato seguente. cioè una newline char dopo street e un'altra newline dopo zip.

strada Città Stato Zip Paese

I valori delle città Stato Zip paese ecc sono stati presi da oggetto contatto. Non voglio usare questo come un campo formula. Quindi ho bisogno di popolarlo nel mio controller e visualizzarlo sulla mia pagina VF.

Sto cercando di aggiungere un carattere di nuova riga utilizzando il codice qui sotto

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

avevo usato anche \ n al posto di \ n.

Si mostrano ancora il campo in una linea invece di 3 linee

EDIT

ho ottenuto questo lavoro utilizzando il seguente codice. Accetterei rispondere ai mathews poiché funzionerebbe con l'outputfield.

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

Questo funziona solo se si utilizza + =. non so perché questo accade

risposta

7

Credo di aver trovato il problema, si hanno due barre carattere escape (\\n), ma è necessario un unico, perché la barra in \n non ha bisogno di essere sfuggito in questo contesto.

Inoltre, Salesforce salva una nuova riga come \r\n. Prova questo:

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

Questo metodo funziona quando si utilizza un <apex:outputfield> con un campo sObject.

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

Se si utilizza un componente Visualforce diverso, non funzionerà. Visualforce esegue il rendering della nuova riga in HTML quando si utilizza un componente , ma HTML ignora le nuove linee. Se si utilizza un tag <br/>, Visualforce lo esegue come &lt;br/&gt;.

La soluzione migliore che è possibile ottenere per il rendering di una variabile con nuove righe (anziché un campo sObject) consiste nell'utilizzare un valore disattivato <apex:inputtextarea>.

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

Im che ha lo stesso problema. Ho provato \ r \ n, \ n, \\ n e anche
e non hanno funzionato! – raym0nd

+0

Che tipo di tag stai usando per visualizzare i dati? '' ha funzionato per me. –

+0

raym0nd

3

Recentemente ho avuto lo stesso problema, ho voluto Reder le nuove linee in un La soluzione che ho trovato è stato questo, è un po 'difficile, ma funziona:

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

Prova questo :

controller pagina

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

VF:

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

Buon divertimento!

-2

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

+2

Alcune cose a cui pensare prima di rispondere: 1) La tua risposta dovrebbe ** aggiungere ** nuove informazioni al post, non solo duplicare qualcun altro, 2) Dovresti spiegare perché/come la risposta risolve il problema, e 3) Devi formatta bene la tua risposta (inserisci il codice nei blocchi di codice). – Ajean