3

我正在尝试将换行标记
插入一些文本并将其显示在网页上。< 和 > 符号被翻译成&lt;and&gt;并且标签在网页上显示为文本。

当我从数据库中选择它时,文本看起来像这样(我已将其输出到 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;
}

这是网页(它是一个使用 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)将escape属性设置为false.

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

正如之前所说,一切都与观点有关。您不能仅在控制器/模型或 java 字符串中执行任何操作。没有任何魔法转义或组合可以使<br>生成的 HTML 不受伤害。您必须在 JSP 中找到所需的属性更改。

在 Struts 中是“过滤器”之一,将其设置为 false 以避免您的 HTML 转义:

爪哇

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

JSP

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

也许我没有完全理解你的问题。但是不能简单地替换\nwith<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 回答