クラス XsltView

実装されているすべてのインターフェース:
Aware, BeanNameAware, InitializingBean, ApplicationContextAware, ServletContextAware, View

public class XsltView extends AbstractUrlBasedView
XSLT 変換の結果としてレスポンスコンテキストをレンダリングできる XSLT 駆動のビュー。

XSLT Source オブジェクトはモデルのパラメーターとして提供され、レスポンスのレンダリング中に detected として提供されます。ユーザーは、sourceKey プロパティを使用してモデルの特定のエントリを指定するか、Spring に Source オブジェクトを配置させることができます。このクラスは、オブジェクトの Source 実装への基本的な変換も提供します。詳細については、here を参照してください。

すべてのモデルパラメーターは、パラメーターとして XSLTTransformer に渡されます。さらに、ユーザーは output properties を Transformer に渡すように構成できます。

導入:
2.0
作成者:
Rob Harrop, Juergen Hoeller
  • コンストラクターの詳細

    • XsltView

      public XsltView()
  • メソッドの詳細

    • setTransformerFactoryClass

      public void setTransformerFactoryClass(ClassSE<? extends TransformerFactorySE> transformerFactoryClass)
      使用する XSLT TransformerFactory クラスを指定します。

      指定されたクラスのデフォルトコンストラクターが呼び出され、このビューの TransformerFactory が構築されます。

    • setSourceKey

      public void setSourceKey(StringSE sourceKey)
      XSLT ソースを表すモデル属性の名前を設定します。指定しない場合、モデルマップで一致する値の型が検索されます。

      次のソース型がそのまま使用できます: SourceSEDocumentSENodeSEReaderSEInputStreamSEResource

      関連事項:
    • setUriResolver

      public void setUriResolver(URIResolverSE uriResolver)
      変換で使用される URIResolver を設定します。

      URIResolver は、XSLT document() 関数への呼び出しを処理します。

    • setErrorListener

      public void setErrorListener(@Nullable ErrorListenerSE errorListener)
      変換エラーと警告のカスタム処理のために ErrorListenerSE インターフェースの実装を設定します。

      設定しない場合、デフォルトの SimpleTransformErrorListener が使用され、ビュークラスのロガーインスタンスを使用して警告をログに記録し、エラーを再スローして XML 変換を中止します。

      関連事項:
    • setIndent

      public void setIndent(boolean indent)
      XSLT トランスフォーマーが結果ツリーを出力するときに空白を追加するかどうかを設定します。

      デフォルトは true (オン)です。これを false (オフ)に設定して、「インデント」キーを指定しないようにします。選択はスタイルシートに任せます。

      関連事項:
    • setOutputProperties

      public void setOutputProperties(PropertiesSE outputProperties)
      スタイルシートに適用される任意のトランスフォーマー出力プロパティを設定します。

      ここで指定した値は、このビューがプログラムで設定するデフォルトを上書きします。

      関連事項:
    • setCacheTemplates

      public void setCacheTemplates(boolean cacheTemplates)
      XSLT TemplatesSE インスタンスのキャッシュをオン / オフにします。

      デフォルト値は "true" です。キャッシングがパフォーマンスに深刻な影響を与えない開発では、これを "false" にのみ設定してください。

    • initApplicationContext

      protected void initApplicationContext() throws BeansException
      この XsltView の TransformerFactory を初期化します。
      オーバーライド:
      クラス ApplicationObjectSupportinitApplicationContext 
      例外:
      BeansException - ApplicationContext メソッドによってスローされた場合
      関連事項:
    • newTransformerFactory

      protected TransformerFactorySE newTransformerFactory(@Nullable ClassSE<? extends TransformerFactorySE> transformerFactoryClass)
      このビューの新しい TransformerFactory をインスタンス化します。

      デフォルトの実装では、単に TransformerFactory.newInstance() を呼び出します。"transformerFactoryClass" が明示的に指定されている場合、指定されたクラスのデフォルトのコンストラクターが代わりに呼び出されます。

      サブクラスでオーバーライドできます。

      パラメーター:
      transformerFactoryClass - 指定されたファクトリクラス (もしあれば)
      戻り値:
      新しい TransactionFactory インスタンス
      関連事項:
    • getTransformerFactory

      protected final TransformerFactorySE getTransformerFactory()
      この XsltView が使用する TransformerFactory を返します。
      戻り値:
      TransformerFactory (非 null)
    • renderMergedOutputModel

      protected void renderMergedOutputModel(MapSE<StringSE,ObjectSE> model, jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) throws ExceptionSE
      クラスからコピーされた説明: AbstractView
      ビューを実際にレンダリングするには、サブクラスでこのメソッドを実装する必要があります。

      最初のステップは、リクエストの準備です。JSP の場合、これはモデルオブジェクトをリクエスト属性として設定することを意味します。2 番目のステップは、たとえば RequestDispatcher を介した JSP を含む、実際のビューのレンダリングです。

      次で指定:
      クラス AbstractViewrenderMergedOutputModel 
      パラメーター:
      model - 静的な属性よりも動的な値が優先される、結合された出力マップ(非 null
      request - 現在の HTTP リクエスト
      response - 現在の HTTP レスポンス
      例外:
      ExceptionSE - レンダリングに失敗した場合
    • createResult

      protected ResultSE createResult(jakarta.servlet.http.HttpServletResponse response) throws ExceptionSE
      変換の結果をレンダリングするために使用される XSLT ResultSE を作成します。

      デフォルトの実装では、提供された HttpServletResponse の OutputStream をラップする StreamResultSE が作成されます。

      パラメーター:
      response - 現在の HTTP レスポンス
      戻り値:
      使用する XSLT 結果
      例外:
      ExceptionSE - 結果を構築できない場合
    • locateSource

      protected @Nullable SourceSE locateSource(MapSE<StringSE,ObjectSE> model) throws ExceptionSE

      必要に応じてオブジェクトを変換し、提供されたモデルで SourceSE オブジェクトを見つけます。デフォルトの実装では、supported type のオブジェクトを見つける前に、構成済みの source key がある場合は、その下を調べようとします。

      パラメーター:
      model - マージされたモデルマップ
      戻り値:
      XSLT Source オブジェクト (見つからない場合は null )
      例外:
      ExceptionSE - ソースの検索中にエラーが発生した場合
      関連事項:
    • getSourceTypes

      protected ClassSE<?>[] getSourceTypes()
      XSLT SourceSE への変換時にサポートされる ClassesSE の配列を返します。

      現在、SourceSEDocumentSENodeSEReaderSEInputStreamSEResource をサポートしています。

      戻り値:
      サポートされているソース型
    • convertSource

      protected SourceSE convertSource(@Nullable ObjectSE sourceObject) throws ExceptionSE
      ObjectSE 型が supported の場合、提供された ObjectSE を XSLT SourceSE に変換します。
      パラメーター:
      sourceObject - 元のソースオブジェクト
      戻り値:
      適応した XSLT ソース
      例外:
      IllegalArgumentExceptionSE - 指定されたオブジェクトがサポートされている型ではない場合
      ExceptionSE
    • configureTransformer

      protected void configureTransformer(MapSE<StringSE,ObjectSE> model, jakarta.servlet.http.HttpServletResponse response, TransformerSE transformer)
      提供された TransformerSE インスタンスを構成します。

      デフォルトの実装では、モデルからパラメーターを Transformer の parameter setSE にコピーします。この実装では、output propertiesTransformerSE output propertiesSE にコピーします。インデントプロパティも設定されます。

      パラメーター:
      model - マージされた出力マップ (非 null)
      response - 現在の HTTP レスポンス
      transformer - ターゲットトランス
      関連事項:
    • configureIndentation

      protected final void configureIndentation(TransformerSE transformer)
      提供されている TransformerSE のインデント設定を構成します。
      パラメーター:
      transformer - ターゲットトランス
      関連事項:
    • copyOutputProperties

      protected final void copyOutputProperties(TransformerSE transformer)
      構成された出力 PropertiesSE(存在する場合)を、提供された TransformerSEoutput property setSE にコピーします。
      パラメーター:
      transformer - ターゲットトランス
    • copyModelParameters

      protected final void copyModelParameters(MapSE<StringSE,ObjectSE> model, TransformerSE transformer)
      提供されたマップのすべてのエントリを、提供された TransformerSEparameter setSE にコピーします。
      パラメーター:
      model - マージされた出力マップ (非 null)
      transformer - ターゲットトランス
    • configureResponse

      protected void configureResponse(MapSE<StringSE,ObjectSE> model, jakarta.servlet.http.HttpServletResponse response, TransformerSE transformer)
      付属の HttpServletResponse を設定します。

      このメソッドのデフォルトの実装では、TransformerSE で指定された "media-type" および "encoding" 出力プロパティから content type および encoding を設定します。

      パラメーター:
      model - マージされた出力マップ (非 null)
      response - 現在の HTTP レスポンス
      transformer - ターゲットトランス
    • createTransformer

      protected TransformerSE createTransformer(TemplatesSE templates) throws TransformerConfigurationExceptionSE
      XSLT 変換を優先するために使用される TransformerSE インスタンスを作成します。

      デフォルトの実装では、単に Templates.newTransformer() を呼び出し、指定されている場合はカスタム URIResolverSETransformerSE を構成します。

      パラメーター:
      templates - Transformer を作成する XSLT テンプレートインスタンス
      戻り値:
      Transformer オブジェクト
      例外:
      TransformerConfigurationExceptionSE - 作成に失敗した場合
    • getStylesheetSource

      protected SourceSE getStylesheetSource()
      configured URL にある XSLT テンプレートの XSLT SourceSE を取得します。
      戻り値:
      Source オブジェクト