2012-04-10 4 views
6

У меня есть пользовательское поле Current_Address__c, которое имеет тип данных textarea.символ новой строки в текстовой области

Мне нужно заполнить это поле в следующем формате. т.е. символ новой строки после улицы и еще одна новая строка после zip.

улица Город Штат Индекс Страна

Значения городской государственной зип страны и т.д., были взяты из контакта объекта. Я не хочу использовать это как поле формулы. Поэтому мне нужно заполнить его в своем контроллере и отобразить его на моей странице VF.

Я пытаюсь добавить символ новой строки символ, используя код ниже

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

я также использовал \ п вместо \ п.

Он по-прежнему показывает поле в одной строке вместо 3-х линий

EDIT

я получил эту работу, используя следующий код. Я бы согласился с ответом Мэтью, поскольку он будет работать с выходным полем.

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

Это работает, только если вы используете + =. не знаю, почему это происходит

ответ

7

Я думаю, что я нашел этот вопрос, у вас есть два экранирующего символа косой черты (\\n), но только один необходим потому, что слэш в \n не нужно экранировать в этом контексте.

Кроме того, Salesforce сохраняет новую строку как \r\n. Попробуйте это:

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

Этот метод работает при использовании <apex:outputfield> с SObject поле.

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

Если вы используете другой компонент Visualforce, это не сработает. Visualforce отображает новую строку в HTML при использовании компонента <apex:outputtext>, но HTML игнорирует новые строки. Если вы используете тег <br/>, Visualforce отображает его как &lt;br/&gt;.

Лучшее решение, которое я мог бы придумать для рендеринга переменной, в которой есть новые строки (а не поле sObject), заключается в использовании отключенного <apex:inputtextarea>.

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

Im с той же проблемой. Я пробовал \ r \ n, \ n, \\ n и даже
, и они не работали! – raym0nd

+0

Какой тип тега вы используете для отображения данных? '' работал для меня. –

+0

raym0nd

3

Недавно у меня была такая же проблема, я хотел Редер новых линий в решение, которое я нашел это, это немного сложнее, но это работает:

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

Попробуйте это :

контроллер

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> 

Удачи!

-2

значение = "Примечания: {! Подставим (JSENCODE (textVariableThanContainsNewLines), '\ г \ п', '
')}"

+2

Некоторые вещи, о которых нужно подумать, прежде чем отвечать: 1) Ваш ответ должен ** добавить ** новую информацию к сообщению, а не просто дублировать чужой, 2) Вы должны объяснить, почему/как ответ решает проблему, и 3) Вы должны хорошо отформатируйте свой ответ (поместите код в блоки кода). – Ajean

Смежные вопросы