文本区域上的换行符

时间:2012-04-10 05:22:52

标签: salesforce apex-code visualforce

我有一个名为Current_Address__c的自定义字段,其数据类型为textarea。

我需要以下面的格式填充此字段。即街道后面的换行符和拉链后的另一个换行符。

街道 邮政编码 国家

城市州拉链国家/地区的价值取自联系对象。我不想将它用作公式字段。所以我需要在我的控制器中填充它并将其显示在我的VF页面上。

我正在尝试使用下面的代码添加换行符

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

我还使用\ n而不是\ n。

它仍然显示一行中的字段而不是3行

修改

我使用以下代码完成了这项工作。我会接受mathews的答案,因为它适用于outputfield。

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

仅当您使用+ =时才有效。 不知道为什么会发生这种情况

4 个答案:

答案 0 :(得分: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组件,则无法使用。使用<apex:outputtext>组件时,Visualforce在HTML中呈现新行,但HTML忽略新行。如果您使用<br/>标记,Visualforce会将其呈现为&lt;br/&gt;

我能想出的最好的解决方案是渲染一个包含新行的变量(而不是sObject字段),使用禁用的<apex:inputtextarea>

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

答案 1 :(得分:3)

最近我遇到了同样的问题,我想在一个新的行中渲染 我找到的解决方案就是这个,它有点棘手但是有效:

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

答案 2 :(得分: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>

玩得开心!

答案 3 :(得分:-3)

value =&#34;备注:{!SUBSTITUTE(JSENCODE(textVariableThanContainsNewLines),&#39; \ r \ n&#39;,&#39;
&#39;)}&#34;