パッケージ jakarta.faces.application

クラス Resource

既知の直属サブクラス
ResourceWrapper

public abstract class Resource extends ViewResource

Resource の インスタンスは、クライアントからのリソースリクエストに応じて提供されるアーティファクトの Java オブジェクト表現です。Resource のインスタンスは通常、ResourceHandler.createResource(java.lang.String) の呼び出しを介して作成および初期化されます。詳細については、ResourceHandler のドキュメントを参照してください。

導入:
2.0
  • フィールドの詳細

    • COMPONENT_RESOURCE_KEY

      public static final StringSE COMPONENT_RESOURCE_KEY

      この定数は、コンポーネントをその Resource インスタンスに関連付けるために、複合コンポーネントのコンポーネント属性マップのキーとして使用されます。このキーの値は、実際の Resource インスタンスです。

      関連事項:
  • コンストラクターの詳細

    • Resource

      public Resource()
  • 方法の詳細

    • getContentType

      public StringSE getContentType()

      このリソースの MIME content-type を返します。

      戻り値:
      このリソースの MIME コンテンツ型。
    • setContentType

      public void setContentType(StringSE contentType)

      このリソースの MIME content-type を設定します。デフォルトの実装では、引数の検証は行われません。

      パラメーター:
      contentType - このリソースの MIME コンテンツ型。デフォルトの実装では、null をパラメーターとして受け入れる必要があります。
    • getLibraryName

      public StringSE getLibraryName()

      このリソースの libraryName を返します。null の場合もあります。リソースの libraryName は、「リソースライブラリ」のメンバーシップを示すオプションの文字列です。同じ libraryName を持つすべてのリソースは、同じ「リソースライブラリ」に属します。「リソースライブラリ」の概念により、同じ resourceName を持つリソースを明確に区別できます。詳細については、ResourceHandler を参照してください。

      戻り値:
      このリソースの libraryName を返します。null の場合もあります。
    • setLibraryName

      public void setLibraryName(StringSE libraryName)

      このリソースの libraryName を設定します。

      パラメーター:
      libraryName - このリソースの libraryName。デフォルトの実装では、libraryName の null を受け入れる必要があります。
    • getResourceName

      public StringSE getResourceName()

      このリソースの resourceName を返します。null になることはありません。すべての Resource インスタンスには resourceName が必要です。

      戻り値:
      このリソースの resourceName を返します。null になることはありません。
    • setResourceName

      public void setResourceName(StringSE resourceName)

      このリソースの resourceName を設定します。

      パラメーター:
      resourceName - null 以外の文字列。
      例外:
      NullPointerExceptionSE - 引数 resourceName が null の場合。
    • getInputStream

      public abstract InputStreamSE getInputStream() throws IOExceptionSE

      現在のリクエストが(ある、ResourceHandler.isResourceRequest(jakarta.faces.context.FacesContext) 戻りの true)リソースリクエストである場合、リソースのバイトを含む InputStream を返します。それ以外の場合は、IOException をスローします。

      戻り値:
      リソースのバイトを含む InputStream 

      リソースに存在する Jakarta Expression Language 式は、リソースのバイトを提供する前に評価する必要があります。ブラウザーとサーバーのキャッシュにより、リソースファイルの Jakarta Expression Language 式は、通常、リソースが最初に提供されたときに一度だけ評価されます。リクエストごとのデータを参照する Jakarta Expression Language 式を使用することは、このデータが古くなる可能性があるためお勧めできません。

      例外:
      IOExceptionSE - 現在のリクエストがリソースリクエストでない場合。
    • getResponseHeaders

      public abstract MapSE<StringSE,StringSE> getResponseHeaders()

      ResourceHandler.handleResourceRequest(jakarta.faces.context.FacesContext) 中にレスポンスヘッダーとしてエントリが送信される可変 Map<String, String> を返します。このマップのエントリは、単一のリクエストの範囲を超えて存続してはなりません。リソースが提供された後にマップに加えられた変更は、ランタイムによって無視されます。

      戻り値:
      レスポンスに含まれるヘッダーの可変 Map<String, String>。
    • getRequestPath

      public abstract StringSE getRequestPath()

      このリソースへのパスを返します。ブラウザーがリソースを含むビューのベース URI に対してそれを解決し、結果の完全修飾 URL に GET リクエストを発行すると、リソースのバイトがレスポンスとして返されます。

      デフォルトの実装では、次のアルゴリズムを実装する必要があります。説明のために、このメソッドから返される結果を result と呼びます。

      • この Web アプリケーションのコンテキストルートを取得します (スラッシュで終わらない)。説明のために、これを contextRoot と呼びます。

      • FacesServlet がプレフィックス (パス) マッピングされているか、拡張子がマッピングされているか、正確にマッピングされているか (Servlet.12.2 で定義)、およびマッピングの値 (拡張子マッピングの場合は先頭の '.' を含む) を検出します。説明のために、これは facesServletMapping になります。

        正確にマップされている場合、FacesServlet が正確な URL パターン ResourceHandler.RESOURCE_IDENTIFIER + getResourceName() にマップされている場合に限り、結果は次のようになります。

        result = contextRoot + ResourceHandler.RESOURCE_IDENTIFIER + getResourceName()

        正確にマップされていて、FacesServlet が正確な URL パターン ResourceHandler.RESOURCE_IDENTIFIER + getResourceName() にマップされていない場合は、次のようにします。

        FacesServlet の既存のマッピングを取得します (例: ServletRegistration.getMappings() を使用)。そこからプレフィックスマッピングまたは拡張マッピングを選択します。そのようなマッピングが見つからない場合は、IllegalStateExceptionSE をスローします。そのようなマッピングが見つかった場合は、そのマッピングから * 文字を削除し、それを新しい facesServletMapping として取得し、プレフィックスがマップされている場合と拡張がマップされている場合に、以下に指定されているようにこのマッピングの評価を続行します。

        プレフィックスがマップされている場合、結果は

        result = contextRoot + '/' + facesServletMapping + ResourceHandler.RESOURCE_IDENTIFIER + '/' + getResourceName()

        拡張機能がマップされている場合、結果は

        result = contextRoot + ResourceHandler.RESOURCE_IDENTIFIER + getResourceName() + facesServletMapping

      • URL クエリ文字列に含めるのに適した、& で区切られた名前 = 値のペアの文字列である resourceMetaData という文字列を構築します。

        getLibraryName() が非 null を返す場合、resourceMetaData には "ln =" + getLibraryName() からの戻り値を含める必要があります

        ResourceHandler.LOCALE_PREFIX で定義されているように、このアプリケーションに localePrefix がある場合、resourceMetaData には "loc =" + localePrefix を含める必要があります。

        このリソースがリソースライブラリ契約に含まれている場合、resourceMetaData には "con =" + リソースライブラリ契約の名前を含める必要があります。

        結果に "?" + resourceMetaData を追加します。

      • 結果を ViewHandler.getResourceURL(jakarta.faces.context.FacesContext, java.lang.String) に渡すことにより、ポートレットを安全にします。

      戻り値:
      Faces レスポンスを送信するときにブラウザーに送信される、エンコードされたビューに含まれることを意図した、このリソースへのパス。
    • getURL

      public abstract URLSE getURL()

      このリソースインスタンスを参照する実際の URL インスタンスを返します。

      次で指定:
      クラス ViewResource の getURL 
      戻り値:
      このリソースインスタンスを参照する実際の URL インスタンスを返します。
    • toString

      public StringSE toString()

      getRequestPath() を呼び出し、結果を返します。

      オーバーライド:
      クラス ObjectSE の toString 
      戻り値:
      getRequestPath() を呼び出し、結果を返します。
    • userAgentNeedsUpdate

      public abstract boolean userAgentNeedsUpdate(FacesContext context)

      このリソースをリクエストしているユーザーエージェントが更新を必要とする場合は、true を返します。このリクエストに If-Modified-Since HTTP ヘッダーが使用できる場合は、IETF RFC 2616 のセクション 14.25 で指定されているように、その値を調べて結果を判別する必要があります。ユーザーエージェントがこのリソースの更新を必要としない場合、false を返します。

      パラメーター:
      context - Faces コンテキスト。
      戻り値:
      ユーザーエージェントがこのリソースの更新を必要とするかどうかに応じて、true または false。