0

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>
4

3 に答える 3

0

JSF 2.0では、css、画像、JavaScriptなどのすべてのWebリソースファイルは、Webアプリケーションのルートの下にある「resources」フォルダー(「WEB-INF」と同じフォルダーレベル)に配置する必要があります。

js / cssをresources/jsandresources/cssフォルダーに入れ、とでそれらにアクセスし<h:outputStylesheetます<h:outputScript

このような

<h:outputScript name="js/rainbow.min.js" />

<h:outputStylesheet name="css/language/css.js" />

等々...


こちらもお読みください:JSF 2.0のリソース(ライブラリ)

于 2013-03-17T09:20:42.720 に答える
0

私はそれを解決しました。実際の問題は、データベースに保存されているhtmlがp:editorを介して生成され、すべての行に非常に多くのdivタグが配置されているため、h:outputTextタグを介してレンダリングされると、cssまたはjavascriptがコードブロックを解析できないことでした。囲まれたdivやその他のタグがあるため、構文の強調表示に適用できます。そのため、データベースに保存する前に、これらの不要なタグをすべて削除しました。返信ありがとうございます。

于 2013-03-17T22:49:25.000 に答える
0

潜在的な問題はここの数の場所にある可能性があります。次のことを順番に確認してください。

    1) Check your CSS files are getting loaded by the browser 
by monitoring the request in developer tools on Firefox or chrome.

   https://developers.google.com/chrome-developer-tools/docs/overview?hl=fr

    2) check the source of your html to see if that looks 
fine and tags are not encoded etc. 

    3) verify your CSS to see it works and it doesn't have missing semicolon,
 brackets,quotes etc by adding it to a test html page on your machine.
于 2013-03-17T14:52:09.027 に答える