2012-04-10 5 views
6

J'ai un champ personnalisé appelé Current_Address__c qui est de zone de texte de type de données.caractère de nouvelle ligne sur la zone de texte

J'ai besoin de remplir ce champ dans le format ci-dessous. c.-à-d. une nouvelle ligne char après rue et une autre nouvelle ligne après zip.

rue Ville État Zip Pays

Les valeurs de l'état ville pays postal etc sont été prises de l'objet de contact. Je ne veux pas utiliser cela comme un champ de formule. J'ai donc besoin de le remplir dans mon contrôleur et l'afficher sur ma page VF.

Je suis en train d'ajouter une nouvelle ligne ombles en utilisant le code ci-dessous

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

j'avais aussi utilisé \ n au lieu de \ n.

Il montrent encore le champ dans une ligne au lieu de 3 lignes

EDIT

Je suis arrivé ce travail en utilisant le code suivant. J'accepterais Matthews répondre car cela fonctionnerait avec outputfield.

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

Ceci ne fonctionne que si vous utilisez + =. ne sais pas pourquoi cela se produit

Répondre

7

Je pense avoir trouvé le problème, vous avez deux barres obliques de caractère d'échappement (\\n), mais un seul est nécessaire parce que la barre oblique \n n'a pas besoin d'être échappé dans ce contexte. Salesforce enregistre également une nouvelle ligne sous la forme \r\n. Salesforce enregistre également une nouvelle ligne en tant que

Essayez ceci:

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

Cette méthode fonctionne lors de l'utilisation d'un <apex:outputfield> avec un champ sObject.

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

Si vous utilisez un composant Visualforce différent, cela ne fonctionnera pas. Visualforce restitue la nouvelle ligne en HTML lors de l'utilisation d'un composant <apex:outputtext>, mais HTML ignore les nouvelles lignes. Si vous utilisez une balise <br/>, Visualforce la rend comme &lt;br/&gt;.

La meilleure solution que je pourrais trouver pour rendre une variable qui contient de nouvelles lignes (plutôt qu'un champ sObject) est d'utiliser un <apex:inputtextarea> désactivé.

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

Im ayant le même problème. J'ai essayé \ r \ n, \ n, \\ n et même
et aucun d'eux n'a fonctionné! – raym0nd

+0

Quel type de tag utilisez-vous pour afficher les données? '' a fonctionné pour moi. –

+0

raym0nd

3

j'ai récemment eu le même problème, je voulais Reder les nouvelles lignes dans une La solution que j'ai trouvé cela, il est un peu délicat, mais il fonctionne:

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

Try this :

contrôleur

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

page VF:

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

Amusez-vous!

-2

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

+2

Quelques points à considérer avant de répondre: 1) Votre réponse devrait ** ajouter ** de nouvelles informations à la publication, pas seulement celle de quelqu'un d'autre, 2) Vous devriez expliquer pourquoi/comment la réponse résout le problème, et 3) Vous devriez formatez bien votre réponse (mettez du code dans les blocs de code). – Ajean

Questions connexes