是否有可能在h:outputtext周围有一个预标签,如下所示?
<pre class="prettyprint lang-java">
<h:outputText value="#{maintainBusinessProcessBean.featureCodeAssistContent}">
</h:outputText>
</pre>
我需要在html页面中显示java方法的内容。我尝试直接在我的pre标签中提供一些示例java方法,如下所示它可以正常工作。
<pre class="prettyprint lang-java">
public int getResult(int a, int b){
return a+b;
}
</pre>
然而,如果我将相同的方法作为字符串提供给h:outputtext并用pre标签包围它,则不会发生格式化或语法突出显示。 java方法内容只显示为文本。
答案 0 :(得分:1)
当然可以。在这种特殊情况下甚至不需要转义,因为示例中的输出不包含任何HTML特殊字符,例如<
,>
等。更重要的是,它肯定会造成麻烦(当输出包含它们时,XSS攻击漏洞等)。你的问题是由别处引起的。您很可能只是在错误的时刻执行语法突出显示脚本。例如。 之前在HTML DOM树中声明了<pre>
标记:
<h:outputScript>prettyPrint();</h:outputScript>
<pre class="prettyprint lang-java">#{maintainBusinessProcessBean.featureCodeAssistContent}</pre>
您应该在窗口加载期间执行它
<h:outputScript>window.onload = prettyPrint;</h:outputScript>
<pre class="prettyprint lang-java">#{maintainBusinessProcessBean.featureCodeAssistContent}</pre>
或至少在身体的最后
<pre class="prettyprint lang-java">#{maintainBusinessProcessBean.featureCodeAssistContent}</pre>
<h:outputScript>prettyPrint();</h:outputScript>
或
<h:outputScript target="body">prettyPrint();</h:outputScript>
<pre class="prettyprint lang-java">#{maintainBusinessProcessBean.featureCodeAssistContent}</pre>