3

テキストに改行タグを挿入
して Web ページに表示しようとしています。< および > 記号は および に変換され&lt;&gt;タグは Web ページ上のテキストとして表示されます。

データベースからテキストを選択すると、テキストは次のようになります (SYSOUT に出力しました)。

version 12.4
service timestamps debug datetime
service timestamps log datetime
service password-encryption

次に、この小さなフィルターを介して実行します。

public DevConfigs getDevConfig() {

    String config = devConfig.getConfig();

    Pattern pattern = Pattern.compile(".$", Pattern.MULTILINE | Pattern.DOTALL);
    Matcher matcher = pattern.matcher(config);
    String newConfig = matcher.replaceAll("<br />");

    devConfig.setConfig(newConfig);
    return this.devConfig;
}

これが Web ページです (Facelets を使用した Seam アプリケーションです):

<rich:tab label="Config">
    hello<br />
    there<br />
    #{devConfig.config}
</rich:tab>

ページのソースは次のようになります。

hello<br />
there<br />
&lt;br /&gt;
&lt;br /&gt;

version 12.&lt;br /&gt;
service timestamps debug datetim&lt;br /&gt;
service timestamps log datetim&lt;br /&gt;
service password-encryptio&lt;br /&gt;
&lt;br /&gt;

ご覧のとおり、私のタグはタグではなく HTML 文字として出力されます。テキストの各行の最後に改行タグを挿入するにはどうすればよいですか??

TDR

4

4 に答える 4

7

テキストの (デフォルトの) HTML エスケープを無効にする必要があります。に設定された属性を使用してh:outputText(またはそれに相当するRichFaces)でそれを行うことができます。escapefalse

<h:outputText value="#{bean.property}" escape="false" />
于 2010-01-05T18:51:27.523 に答える
1

前にも言ったように、それはすべてビューに関するものです。コントローラ/モデルまたはJava文字列だけでは何もできません。魔法のエスケープや組み合わせによって<br>、生成されたHTMLに無傷でアクセスすることはできません。JSPで必要な属性の変更を見つける必要があります。

Strutsは「フィルター」であり、HTMLのエスケープを避けるためにfalseに設定します。

Java

String text = "This line will <br> break";

JSP

<bean:write name="object" property="attribute" filter="false"/>
于 2012-01-05T09:22:29.410 に答える
0

多分私はあなたの質問を完全に理解していませんでした。\nしかし、単純にをに置き換えることはできません<br />か?

public DevConfigs getDevConfig() {

    String config = devConfig.getConfig();
    String newConfig = config.replace("\n", "<br />");
    devConfig.setConfig(newConfig);
    return this.devConfig;
}

この正規表現テスターに​​あなたのテキストを入力しました。これは問題なく動作しますが、私が選択Pregした場合Dialect... 彼は に置き換えます&lt;br /&gt;。Javascriptの方言でのみ正しくなります。
だから多分それは同じ問題です。

おー。正規表現に使用する場合.$、行から最後の文字を削除します (置換時)。

于 2010-01-05T19:21:55.830 に答える
0

私はあまり Java を書いていません。特にこれに関連するものは何もありません。

<rich:tab label="Config">
    hello<br />
    there<br />
    #{devConfig.config}
</rich:tab>

このように書かれてはいけません

<rich:tab label="Config">
    <![CDATA[
    hello<br />
    there<br />
    ]]>
    #{devConfig.config}
</rich:tab>

または単に:

<rich:tab label="Config">
    <![CDATA[
    hello
    there
    ]]>
    #{devConfig.config}
</rich:tab>

?

于 2010-01-05T18:47:13.540 に答える