2011-02-25 10 views
1

GWTを使用してJSFのStruts2を使用して、クライアントにリソース(.cssファイルなど)のみを提供するかどうかを知りたい場合if ifページはその瞬間にそれを必要とします。GWT、Struts2、JSF - CSSを管理する - 必要な場合のみ提供する

私は、その時点で読み込まれたページにCSSを含めることを意味するのではなく、このプロセスを自動的に管理するメカニズムが存在する場合はそうです。

+0

"クライアントにダウンロードしますか?" –

+1

用語は確かに間違っています:)クライアントからサーバーへのアップロードが増えています。 CSS/JSファイルは基本的にサーバーからクライアントにダウンロードされます。私はそれを改善しました。 – BalusC

答えて

3

<h:outputStylesheet>または<h:outputScipt>をテンプレートまたはコンポジットコンポーネントのどこにでも使用できるJSF2では、 JSFはそれを生成されたHTML <head>に入れることに注意します。

など。

<ui:composition 
    xmlns:h="http://java.sun.com/jsf/core" 
    xmlns:ui="http://java.sun.com/jsf/facelets" 
> 
    <h:outputStylesheet library="css" name="specific.css" /> 
    <h:outputScript library="js" name="specific.js" /> 
    ... 
</ui:composition> 

これらのファイルと組み合わせて、/resourcesのWebコンテンツのフォルダ。また/resources/js/specific.js

/resources/css/specific.css

    • は、JSF2 UIComponentであなたは@ResourceDependency@ResourceDependencies注釈を使用して、特定のリソースを強制的にロードすることができます。

      @ResourceDependency(library="css", name="specific.css") 
      public class CustomComponentWithCSS extends UIComponentBase { 
          // ... 
      } 
      

      @ResourceDependencies({ 
          @ResourceDependency(library="css", name="specific.css"), 
          @ResourceDependency(library="js", name="specific.js") 
      }) 
      public class CustomComponentWithCSSandJS extends UIComponentBase { 
          // ... 
      } 
      

      あなたのビューコードで<custom:componentWithCSS>を使用するたびので、JSF2は、生成されたHTML <head>に注釈付きのリソースが含まれます。

  • +0

    はい、これはページに.cssを使用する簡単な「インクルード」のようです。私はその可能性がある場合は、(インデックスなど)すべての.cssファイルを含めることを知りたいと思って、(サーバーから)要求されたページに必要なCSSシートだけをダウンロードします。出来ますか? – markzzz

    +1

    魅力的です。私は最近、この技術を知らずに、この@ResourceDependency/@ResourceDependenciesメカニズムと機能と構文が非常に似たメカニズムをwicketで実装しました。ショーに行く:事を効果的に行う方法は限られています:-) +1 –

    +1

    @markzzz:いいえ、それは不可能です。提供されたスタイルシートに必要なスタイルが存在するかどうかは、クライアントが事前に知ることができません。 **あなた**は、特定のページに対してクライアントが実際に必要とするリソースのみを提供する責任があります。 @新:あなたは大歓迎です。 – BalusC

    1

    あなたが探しているリソースを自動的に組み込むことは不可能であるとBalusCが答えているようです。同意する。私はこれを行う方法を想像することができますが、それはひどく複雑で、結果のページを膨らませ、それを不合理にするためにオーバーヘッドのajaxを必要とします。

    次に、ページxが "main.css"から "hot"が必要であり、言い換えれば "company.css"から "hot"が必要なcssクラス "hot"を要求するときに説明する構成事項があります。構成の量はおそらく自分でそれを管理する作業の量に等しいでしょう。

    Struts2を使用していて、コンポジションベースのストラテジーTiles2のようなものがあるのならば、それは外に出ていくのです。

    基本的にはテンプレートを作成し、次に別の定義ファイルがあり、定義にはテンプレートに移動するリソースが記載されています。だから、特定のCSSファイル、スクリプトファイル、JSPファイルを移動したり、複数のテンポを作成したりすることもできます。次に、その定義を継承し、必要に応じて定義を変更したり拡張したりする部分をオーバーライドすることができます(OOP継承で得られるものに似ています)。名前のタイルは、あなたのページがページを作るために配置されたいくつかのセラミックタイルと考えられているという考えから来ています。しかし、継承はある特定のページセットが特定のレイアウトに基づいていると言うことができます。タイルの継承を使用すると、魔法のリソース管理のように感じることができます...それは物事を簡単にしますが、それはまっすぐな構成です。

    タイルは自然に組成に合わせて作られていますが、装飾もサポートしています。多くの人はsitemeshで宣誓し、主にデコレーションのアプローチを好む。この2つのレイアウトのパラダイムを見て、あなたに最も合ったものを見てみる必要があります。

    関連する問題