XHTML タグ間の不要な空白を削除するように JSF 2.0 を構成することは可能ですか?
3 に答える
いいえ。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のみが考慮されていません。
この答えは私のブログから来ています:
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 リソースが削減されるため、アプリケーションを少し強化することができます。
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を圧縮」する簡単な方法を知りたいです。