2012-04-10 71 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

相關問題