クラス FilenameFlowUrlHandler

java.lang.ObjectSE
org.springframework.webflow.context.servlet.DefaultFlowUrlHandler
org.springframework.webflow.context.servlet.FilenameFlowUrlHandler
実装されたすべてのインターフェース:
FlowUrlHandler

public class FilenameFlowUrlHandler extends DefaultFlowUrlHandler
標準の DefaultFlowUrlHandler の代替となるファイル名ベースの FlowUrlHandler 実装。URL サフィックスやプレフィックスのないリクエストのファイル名をフロー ID として扱います。既存の Web Flow 2 アプリケーションとの互換性を維持するために、FlowController 実装によってデフォルトの実装として使用されます。

この実装は、ファイル名を抽出し、リクエスト URL からファイル拡張子を削除します。結果は、アプリケーション全体で一意である必要があるフロー ID として使用されます。

たとえば、URL は次のようになります。

        https://someHost/someApp/someServlet/foo
        https://someHost/someApp/someServlet/nestedPath/foo
        https://someHost/someApp/someServlet/nestedPath/foo.html
 
ファイル名 "foo" はすべてフロー ID として扱われます。

注意 : このクラスはファイル名のみをフロー ID として扱うため、衝突が発生する可能性があります。例:

 http://localhost/springtravel/app/hotel/booking
 http://localhost/springtravel/app/flight/booking
 
どちらも、"hotel/booking" と "flight/booking" ではなく、同じフロー ID "booking" をマップします。これはこの実装の制限です。これらの衝突を回避するには、リクエスト URL プレフィックスも使用する標準の DefaultFlowUrlHandler の使用を検討してください。
作成者:
Agim Emruli, Jeremy Grelle, Nazaret Kazarian
  • コンストラクターの詳細

    • FilenameFlowUrlHandler

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

    • getFlowId

      public StringSE getFlowId(jakarta.servlet.http.HttpServletRequest request)
      インターフェースからコピーされた説明: FlowUrlHandler
      リクエストからフロー ID を抽出します。
      次で指定:
      インターフェース FlowUrlHandlergetFlowId 
      オーバーライド:
      クラス DefaultFlowUrlHandlergetFlowId 
      パラメーター:
      request - リクエスト
      戻り値:
      フロー ID、またはフロー ID が存在しない場合は null
    • extractFilenameFromUrlPath

      public static StringSE extractFilenameFromUrlPath(StringSE urlPath)
    • extractFullFilenameFromUrlPath

      public static StringSE extractFullFilenameFromUrlPath(StringSE urlPath)
    • createFlowDefinitionUrl

      public StringSE createFlowDefinitionUrl(StringSE flowId, AttributeMap<?> input, jakarta.servlet.http.HttpServletRequest request)
      指定された flowId のフロー定義 URL は、同じパスとファイル拡張子を再利用して、現在のリクエストの URL から推測されます。

      サンプル - 次の場所からリクエストが送信されました:

       https://someHost/someApp/someServlet/nestedPath/foo.html
       
      フロー ID "bar" のリクエストの場合、新しいフロー定義 URL は次のようになります。
       https://someHost/someApp/someServlet/nestedPath/bar.html
       
      次で指定:
      インターフェース FlowUrlHandlercreateFlowDefinitionUrl 
      オーバーライド:
      クラス DefaultFlowUrlHandlercreateFlowDefinitionUrl 
      パラメーター:
      flowId - フロー定義の ID
      input - 新しいフロー実行を渡すための入力
      request - 現在のリクエスト
      戻り値:
      フロー定義 URL