Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将标记插入java字符串_Java_Regex_Xhtml_Jsf_Facelets - Fatal编程技术网

如何将标记插入java字符串

如何将标记插入java字符串,java,regex,xhtml,jsf,facelets,Java,Regex,Xhtml,Jsf,Facelets,我试图在一些文本中插入换行标记,并将其显示在网页上。符号被翻译成和,标签在网页上显示为文本 当我从数据库中选择文本并将其输出到SYSOUT时,文本如下所示: version 12.4 service timestamps debug datetime service timestamps log datetime service password-encryption 然后我通过这个小过滤器运行它: public DevConfigs getDevConfig() { String

我试图在一些文本中插入换行标记,并将其显示在网页上。<和>符号被翻译成和,标签在网页上显示为文本

当我从数据库中选择文本并将其输出到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

我没有写那么多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>

您需要禁用文本的默认HTML转义。您可以使用h:outputText或任何等效的RichFaces来实现这一点,并将转义属性设置为false


也许我没有完全理解你的问题。但是,是否可以简单地将\n替换为

我把你的文字输入了。这很好,但如果我选择Preg按方言。。。他用br/替换。只有使用Javascript方言,它才是正确的。所以,也许这也是同样的问题


哦。当您将.$用于正则表达式时,在替换时将删除行中的最后一个字符。

正如前面所说,这一切都与视图有关。您不能仅在控制器/模型或java字符串中执行任何操作。任何神奇的转义或组合都不能保证对生成的HTML的访问不受伤害。您必须在JSP中找到所需的属性更改

在Struts中,过滤器是一个,将其设为false以避免HTML转义:

爪哇

JSP


您没有向我们展示最关键的代码—将字符串输出到网页的代码。根据您提供的内容,字符串肯定包含字符,而不是HTML编码的对应字符,因此我们现在需要查看获取devConfig对象、检索字符串并输出它的代码。这最初是在h:outputText标记中,但我不知道转义属性。我要测试一下这个。最后,我在输出文本周围放置了一个标记。我忘了说我取出了所有匹配和替换的regexp,只是在一个标记中显示了数据库中的代码。
<h:outputText value="#{bean.property}" escape="false" />
public DevConfigs getDevConfig() {

    String config = devConfig.getConfig();
    String newConfig = config.replace("\n", "<br />");
    devConfig.setConfig(newConfig);
    return this.devConfig;
}
String text = "This line will <br> break";
<bean:write name="object" property="attribute" filter="false"/>