2012-04-10 18 views
6

Mam niestandardowe pole o nazwie Current_Address__c, które jest textarea typu danych.znak nowej linii na obszarze tekstowym

Muszę wypełnić to pole w poniższym formacie. tj. znak nowej linii po ulicy i kolejny znak po zipie.

ulica City State Country Zip

Wartości państwowej miasta zip kraju etc są wzięto od obiektu kontaktowego. Nie chcę używać tego jako pola formuły. Muszę zapełnić go w moim kontrolerze i wyświetlić go na mojej stronie VF.

Próbuję dodać char nowej linii za pomocą kodu poniżej

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

miałem też stosować \ n zamiast \ n.

Nadal pokazują pole w jednej linii zamiast 3 linii

EDIT

Dostałem tej pracy przy użyciu następującego kodu. Akceptowałbym odpowiedź mathews, ponieważ działałoby to z polem wyjściowym.

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

Działa to tylko wtedy, gdy używasz + =. nie wiem, dlaczego tak się dzieje

Odpowiedz

7

Chyba znalazłem problem, masz dwa ukośniki znaków escape (\\n), ale potrzebna jest tylko jeden, ponieważ ukośnik w \n nie musi być ocalałem w tym kontekście.

Ponadto Salesforce zapisuje nową linię jako \r\n. Spróbuj tego:

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

Ta metoda działa w przypadku korzystania z <apex:outputfield> z polem sObject.

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

Jeśli używasz innego komponentu Visualforce, to nie zadziała. Visualforce renderuje nową linię w HTML przy użyciu komponentu <apex:outputtext>, ale HTML ignoruje nowe linie. Jeśli używasz znacznika <br/>, Visualforce wyświetla go jako &lt;br/&gt;.

Najlepszym rozwiązaniem, które mógłbym wymyślić do renderowania zmiennej, która ma w niej nowe linie (zamiast pola sObject), jest użycie wyłączonego <apex:inputtextarea>.

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

Im ten sam problem. Próbowałem \ r \ n, \ n, \\ n, a nawet
i żaden z nich nie działał! – raym0nd

+0

Jakiego typu tagu używasz do wyświetlania danych? '' działało dla mnie. –

+0

raym0nd

3

Ostatnio miałem ten sam problem, chciałem Reder nowe linie w rozwiązanie, które znalazłem było to, że jest to trochę skomplikowane, ale to działa:

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

Wypróbuj :

Controller

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

VF strony:

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

Miłej zabawy!

-2

value = "Uwagi: {! Zastępczych (JSENCODE (textVariableThanContainsNewLines), '\ r \ n', '
')}"

+2

Kilka rzeczy, o których warto pomyśleć przed udzieleniem odpowiedzi: 1) Twoja odpowiedź powinna ** dodać ** nowe informacje do posta, nie tylko powielać czyjeś, 2) Powinieneś wyjaśnić, dlaczego/jak odpowiedź rozwiązuje problem, i 3) Powinieneś dobrze sformatuj swoją odpowiedź (umieść kod w blokach kodu). – Ajean

Powiązane problemy