如何将标记插入java字符串
我试图在一些文本中插入换行标记,并将其显示在网页上。<和>符号被翻译成和,标签在网页上显示为文本 当我从数据库中选择文本并将其输出到SYSOUT时,文本如下所示:如何将标记插入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
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 />
<br />
<br />
version 12.<br />
service timestamps debug datetim<br />
service timestamps log datetim<br />
service password-encryptio<br />
<br />
正如您所看到的,我的标记显示为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"/>