VisualForce:変換台車に戻るとhtmlライン-ブレイクの長いテキストフィールド
-
22-09-2019 - |
質問
Salesforceがんに結合テキストフィールドへのVisualForceページを頂きましたの良い方法で変換する運送を返しまのテキストフィールドのHTML <br/>
タグ?
例えばかのようなこと:
<apex:page standardController="Case">
<apex:pageBlock title="Test">
<p>{!case.Description}</p>
</apex:pageBlock>
<apex:detail relatedList="false" />
</apex:page>
...場合には説明が長く運送を返します、どうやってHTML ifyのですか?
(このはかなり簡単に、思いきますが、Salesforceの地域ちい図しなく。)
編集:(恵みを追加してみても常にその興奮)
解決
これを試してみてください
<apex:outputField value="{!case.Description}"/>
出力フィールドを使用すると、自動的に書式を維持します。
他のヒント
私は最終的にいくつかのロングったらしいコードでこれを実現します。
カスタムコントローラでは、手動で検索した後にフィールドを返すと、フィールドに改行を交換し、<br/>
タグに置き換えるためにメソッドを追加します:
public string getCaseDescriptionFormatted()
{
Case c = this.loadCaseFromDatabaseOrWhatever();
return lineBreaks(c.Description);
}
private string lineBreaks(string inText)
{
if (inText == null)
return '';
else
return inText.replaceAll('<','(').replaceAll('>',')').replaceAll('\n','<br/>');
}
エスケープとのoutputText = "false" に: この後のページ、使用の頂点で
<apex:outputText value="{!CaseDescriptionFormatted}" escape="false" />
エスケープ=「false」とhtmlタグから逃げるのVisualforceを防止する必要があることを注。これはまた、あなた自身がすることによって仮想的にデータに埋め込まれた可能性がありスクリプティング攻撃に開いたままを意味します。ザッツなぜコントローラでlineBreaks()
は、fnはまた、任意の<
と>
文字を置き換えます。
(提案を歓迎し、文字列の安全を作るためのより良い方法があるかもしれません)。
TehNrdの上に私のための質問に答えました。
私は、アカウントの一般的な例に類似ケースのタブ付きビューを開発しています。それはケースのコメントを示すことになると、あなただけの関連リストにそれらを置くことができないし、代わりにあなたの手でそれらをフォーマットする必要があります。我々はより多くの手のコーディングをしなければならないので、ユーザーが読み取ることができません密集テーブル内の標準頂点pageBlockTableの結果を使用。このアプローチは、私はテーブルの内容をフォーマットするためにCSSを使用することができます。しかし、問題は、フォーマットされた改行と電子メールメッセージの場合コメントをフォーマットました。 TehNrdの答えは完全に働いた!
ここで他の人のために編集するアクションのコメントと一緒にフォーマットさCaseCommentとタブを表示するためのコードです。
<apex:tab label="Comments" name="Comments" id="tabComments">
<apex:form >
<apex:pageBlock id="commentsPageBlock">
<apex:pageBlockButtons location="top">
<apex:commandButton value="Toggle Sort" action="{!RequeryComments}" id="theButton" rerender="commentsPageBlock"></apex:commandButton>
</apex:pageBlockButtons>
<table border="0" class="commentsTable">
<tr>
<th class="commentsActionColumn">Action</th>
<th class="commentBodyClass">Comments</th>
</tr>
<!-- get the case comments from the controller -->
<apex:repeat value="{!comments}" var="c">
<tr>
<td class="commentsActionColumn">
<!-- open the case comment for edit -->
<apex:outputLink title="" value="/{!c.id}/e?parent_id={!c.parentId}&retURL=/apex/{!$CurrentPage.Name}%3Fid={!case.id}" style="font-weight:bold">Edit</apex:outputLink>
</td>
<td>
<!-- display the case comment formatted using the apex outputField -->
<div class="commentTdClass">
<apex:outputField value="{!c.commentbody}"></apex:outputField>
</div>
</td>
</tr>
</apex:repeat>
</table>
</apex:pageBlock>
</apex:form>
</apex:tab>
あなたはoutputTextの?
を使用してみましたそれはここに私のアイデアのための仕事の投票をしていない場合:ます。https:// sites.secure.force.com/ideaexchange/ideaView?id=08730000000H4XDAA0する ページにJSONを返すようにしようとしたとき、私は同じ問題を持っていたよう。
他の人にもこのアイデアをしたい https://sites.secure .force.com / ideaexchange /頂点/ ideaview?ID = 08730000000BrhEAASする
、TehNrdはそれを釘付け - 私はVisualforceの通知の電子メールテンプレートでケース「説明」を表示しようとしていた、そしてすべてのCR /のLFは消え、行/段落が一緒に実行を取得しました。それを作るOutputField値は完全にそれを修正します。
あなたのような何かを試みることができます
{!substitute(Case.Description, '\n', '<br/>')}