4

XHTML タグ間の不要な空白を削除するように JSF 2.0 を構成することは可能ですか?

4

3 に答える 3

7

いいえ。Faceletsは不要な空白と必要な空白を区別できません。そのためには、個々のHTMLタグを判別し、CSSファイルとJSファイルを解析して、それが本当に不要であるという証拠を探す必要があります。HTML<pre><textarea>タグ、CSSwhite-space:preプロパティ、JSelement.style.whiteSpace='pre'コードの場合、空白は重要です。

それを確実にチェックするには、単純に費用がかかり、複雑すぎます。実際の懸念がネットワーク帯域幅である場合は、サーバーレベルでgzip圧縮をオンにするだけです。その方法は使用するサーバーによって異なりますが、たとえばTomcatでは、の要素に追加compression="on"するのと同じくらい簡単です。<Connector>/conf/server.xml

Filterただし、空白を削除するために応答ライターを置き換えるを作成することは可能です。このようなフィルターの例をここで見つけることができます。CSS/JSのみが考慮されていません。

于 2011-02-28T11:44:40.243 に答える
4

この答えは私のブログから来ています:

http://lu4242.blogspot.com/2012/12/html-white-space-compression-for-jsf.html


MyFaces Core バージョン 2.1.10 以降を使用してこれらのスペースを削除し、faces-config.xml にこれを追加できます。

<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
                     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                     http://java.sun.com/xml/ns/javaee/web-facesconfig_2_1.xsd"
                     version="2.1">
    <faces-config-extension>
        <facelets-processing>
            <file-extension>.xhtml</file-extension>
            <process-as>xhtml</process-as>
            <oam-compress-spaces>true</oam-compress-spaces>
        </facelets-processing>
    </faces-config-extension>
</faces-config>

それでおしまい。現在、facelets コンパイラは、ページの外観の変更を避けるために、html 空白圧縮のルールに従って、不要な場合にスペース/タブを削減または削除しようとします。簡単に言えば、これは、必要に応じて、複数の連続するスペースを 1 つだけに置き換えるか、すべて削除することを意味します。また、圧縮後のページ マークアップを読みやすくするために、可能な場合は「\n」文字を使用しようとします。

この最適化は facelets コンパイラで行われるため、空白を減らす作業は一度だけ行われるため、すべてのページで追加の CPU またはメモリのオーバーヘッドが発生することはありません。さらに、ページのレンダリングに必要なメモリと CPU リソースが削減されるため、アプリケーションを少し強化することができます。

于 2013-03-01T23:18:18.163 に答える
2

Primefaces> jsf>jsp>servletの解析後に作成された空白を削除してhtmlを圧縮する簡単な解決策を見つけようとしています。

Primefacesはjsとcssの圧縮に役立つことを学びましたが、primesfacesの解析後にjsfからjspが発生するため、HTMLについては何もできません。

ディレクティブがあったJSP仕様

  <%@ page trimDirectiveWhitespaces="true" %> 

私が必要なことをするために。

さらに、必要に応じてweb.xmlで処理できます。

正しい方法は、それを処理するようにWebサーバーを構成することです。

ただし、jBoss7.1.1はJSP設定に対する感度を失いました。(問題は、JSPを変更するたびにサーバーを再起動する必要があった7.0で始まりました。問題は修正され、7.1で戻ってきました。7.2で修正されるはずですが、7.2はまだリリースされていません。)

いずれにせよ、jBossは優れたツールです。

私の質問は、JSPからJSFに移行する機能が失われているかどうかです。

これは、JSFが自分自身を解析しようとしているJSPにtrimDirectiveWhitespacesを配置するように指示するある種のタグである必要があります。

ストリーミングするたびに出力がトリミングされるため、「フィルター」ソリューションは好きではありません。むしろ、JSP> Sevletにコンパイルするのではなく、途中で毎回コンパイルします。その上、それはカスタムメイドです(標準ではなく、文書化されていません...)。

それでも、JSFで「空白を削除」、「htmlを圧縮」する簡単な方法を知りたいです。

于 2012-10-15T14:00:27.120 に答える