escape="false" を使用して h:outText からレンダリングされたコンテンツは、そのページに適用可能な CSS または JavaScript にバインドされていません。実際、構文ハイライターを使用して、投稿内の構文を強調表示しようとしています。投稿はデータベースに保存され、escape 属性を false に設定することで、h:outputText タグを使用して JSF ページに表示されます。すべての html タグが処理されて期待どおりにページがレンダリングされますが、その投稿内のコード ブロックに適用可能な css または javascript は適用されません。以下は、データベースからhtmlを取得し、h:outputTextタグで表示するjsfページです。検索されたコンテンツには、強調表示する必要がある構文があります。
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui"
template="/templates/ui.xhtml">
<ui:define name="head">
<title>tekBytes-#{tutorialController.tut.title}</title>
<h:outputScript library="primefaces" name="jquery/jquery.js" />
<link href="/rainbow/themes/pastie.css" rel="stylesheet" type="text/css" />
<script src="/rainbow/rainbow.min.js"></script>
<script src="/rainbow/language/generic.js"></script>
<script src="/rainbow/language/java.js"></script>
<script src="/rainbow/language/css.js"></script>
<script type = "text/javascript">
/*
* do some jQuery magic on load
*/
$(document).ready(function() {
function showHiddenParagraphs() {
$("pre.hidden").fadeIn(500);
}
setTimeout(showHiddenParagraphs, 1000);
});
</script>
</ui:define>
<ui:define name="content">
<div style="margin:20px">
<h1>#{tutorialController.tut.title}</h1>
<br/>
<h:outputText value="#{tutorialController.tut.contentStr}" escape="false"/>
</div>
</ui:define>
</ui:composition>