7

データ型テキストエリアの Current_Address__c というカスタム フィールドがあります。

このフィールドを以下の形式で入力する必要があります。つまり、street の後に改行文字があり、zip の後に別の改行があります。

通り 都市 州 郵便番号 国

都市、州、郵便番号、国などの値は、連絡先オブジェクトから取得されています。これを数式フィールドとして使用したくありません。したがって、コントローラーに入力して、VF ページに表示する必要があります。

以下のコードを使用して改行文字を追加しようとしています

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

\n の代わりに \n も使用していました。

フィールドは 3 行ではなく 1 行で表示されます。

編集

次のコードを使用してこれを機能させました。出力フィールドで機能するため、マシューの回答を受け入れます。

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

これは、+= を使用した場合にのみ機能します。なぜこれが起こるのか分かりません

4

4 に答える 4

8

問題が見つかったと思います.2 つのエスケープ文字スラッシュ ( \\n) が\nありますが、このコンテキストではスラッシュをエスケープする必要がないため、必要なのは 1 つだけです。

また、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 で改行をレンダリングしますが、HTML は改行を<apex:outputtext>無視します。タグを使用する<br/>と、Visualforce はそれを として表示し&lt;br/&gt;ます。

(sObject フィールドではなく) 新しい行を含む変数をレンダリングするために思いつく最善の解決策は、 disabled を使用すること<apex:inputtextarea>です。

<apex:inputtextarea value="{!myAddress}" disabled="true" readonly="true">
</apex:inputtextarea>
于 2012-04-10T14:01:04.293 に答える
3

最近、私は同じ問題を抱えていました。私が見つけた解決策はこれでした.

<apex:outputText value="{!SUBSTITUTE(JSENCODE(textVariableThanContainsNewLines), '\\n', '<br/>')}" escape="false"/>
于 2013-08-21T15:09:15.503 に答える
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>

楽しむ!

于 2014-08-19T09:07:10.477 に答える
-3

value="備考: {!SUBSTITUTE(JSENCODE(textVariableThanContainsNewLines), '\r\n', '
')}"

于 2015-01-21T21:50:34.057 に答える