2012-04-10 79 views
6

我有一个名为Current_Address__c的数据类型为textarea的自定义字段。文本区域换行符

我需要用下面的格式填充这个字段。即在街道之后换行符,并在zip之后换行。

街道 市州邮编 国家

市州邮编国家等的值被从接触对象获取的。我不想将此用作公式字段。所以我需要将它填充到我的控制器中,并将其显示在我的VF页面上。

我尝试使用下面的代码

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

添加一个新行字符我也用\ n代替\ n。

它仍然显示领域的一条线,而不是三线

编辑

我用下面的代码得到了这个工作。我会接受mathews的答案,因为它可以和outputfield一起工作。

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

仅当您使用+ =时才有效。 不知道为什么会这样

回答

7

我想我找到了问题,你有两个转义字符斜线(\\n),但只有一个是需要的,因为在\n斜线并不需要在这方面进行转义。

另外,Salesforce将新行保存为\r\n。使用<apex:outputfield>用的sObject场时

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

此方法:试试这个。

<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> 
+0

林有同样的问题。我试过\ r \ n,\ n,\\ n甚至
,他们都没有工作! – raym0nd 2012-04-10 14:21:31

+0

你使用什么类型的标签来显示数据? ''为我工作。 – 2012-04-10 14:25:21

+0

raym0nd 2012-04-10 14:35:29

3

最近我有同样的问题,我想REDER在 ,我发现这个问题的解决新线,这是一个有点棘手,但它的工作原理:

<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

值= “备注:{!SUBSTITUTE(JSENCODE(textVariableThanContainsNewLines), '\ r \ n', '
')}”

+2

在回答之前需要考虑的一些事情:1)你的回答应该**向帖子中添加**新信息,而不仅仅是重复其他人的信息,2)你应该解释为什么/如何回答解决问题,以及3)你应该格式化你的答案很好(把代码放在代码块中)。 – Ajean 2015-01-21 21:59:23