Class FormTag

All Implemented Interfaces:
jakarta.servlet.jsp.tagext.DynamicAttributes, jakarta.servlet.jsp.tagext.IterationTag, jakarta.servlet.jsp.tagext.JspTag, jakarta.servlet.jsp.tagext.Tag, jakarta.servlet.jsp.tagext.TryCatchFinally, Serializable

public class FormTag extends GenericAttributesTagSupport
サブミット制御(ボタンとアクションの紐付け、二重サブミット防止)と不正画面遷移チェックを行うformタグを出力するクラス。
See Also:
  • Constructor Details

    • FormTag

      public FormTag()
  • Method Details

    • setWindowScopePrefixes

      public void setWindowScopePrefixes(String windowScopePrefixes)
      ウィンドウスコープ変数のプレフィックスを設定する。
       複数指定する場合はカンマ区切り。
       
      Parameters:
      windowScopePrefixes - ウィンドウスコープ変数のプレフィックス
    • setUseToken

      public void setUseToken(Boolean useToken)
      トークンを設定するか否かを設定する。
       デフォルトはfalse。
       confirmationPageタグが指定された場合は、デフォルトがtrueとなる。
       
      Parameters:
      useToken - トークンを設定する場合はtrue、設定しない場合はfalse。
    • setSecure

      public void setSecure(Boolean secure)
      URIをhttpsにするか否かを設定する。
      Parameters:
      secure - httpsにする場合はtrue、しない場合はfalse。
    • setPreventPostResubmit

      public void setPreventPostResubmit(boolean preventPostResubmit)
      POST再送信を防止するか否かを設定する。

      デフォルトはfalse。

      Parameters:
      preventPostResubmit - POST再送信を防止する場合はtrue、しない場合はfalse。
    • setAction

      public void setAction(String action)
      XHTMLのaction属性を設定する。
      Parameters:
      action - XHTMLのaction属性
    • setAutocomplete

      public void setAutocomplete(String autocomplete)
      HTML5のautocomplete属性を設定する。
      Parameters:
      autocomplete - HTML5のautocomplete属性
    • setMethod

      public void setMethod(String method)
      XHTMLのmethod属性を設定する。
      デフォルトはpost。
      Parameters:
      method - XHTMLのmethod属性
    • setName

      public void setName(String name)
      XHTMLのname属性を設定する。
      Parameters:
      name - XHTMLのname属性
    • setEnctype

      public void setEnctype(String enctype)
      XHTMLのenctype属性を設定する。
      Parameters:
      enctype - XHTMLのenctype属性
    • setOnsubmit

      public void setOnsubmit(String onsubmit)
      XHTMLのonsubmit属性を設定する。
      Parameters:
      onsubmit - XHTMLのonsubmit属性
    • setOnreset

      public void setOnreset(String onreset)
      XHTMLのonreset属性を設定する。
      Parameters:
      onreset - XHTMLのonreset属性
    • setAccept

      public void setAccept(String accept)
      XHTMLのaccept属性を設定する。
      Parameters:
      accept - XHTMLのaccept属性
    • setAcceptCharset

      public void setAcceptCharset(String acceptCharset)
      XHTMLのaccept-charset属性を設定する。
      Parameters:
      acceptCharset - XHTMLのaccept-charset属性
    • setTarget

      public void setTarget(String target)
      XHTMLのtarget属性を設定する。
      Parameters:
      target - XHTMLのtarget属性
    • doStartTag

      public int doStartTag() throws jakarta.servlet.jsp.JspException
       開始タグとサブミット制御に使用するJavaScriptのサブミット関数を出力する。
       method属性がpostかつ画面内で1番目のフォームタグの場合のみサブミット関数を出力する。
       サブミット関数が出力される前にサブミットされJavaScriptエラーが発生することを防ぐため、
       JavaScriptのサブミット関数は開始タグの直前に出力する。
       method属性の指定がない場合は、postを設定する。
       name属性の指定がない場合は、値を生成し設定する。
       属性はHTMLエスケープして出力する。
       
      Specified by:
      doStartTag in interface jakarta.servlet.jsp.tagext.Tag
      Overrides:
      doStartTag in class jakarta.servlet.jsp.tagext.TagSupport
      Throws:
      jakarta.servlet.jsp.JspException
    • doEndTag

      public int doEndTag() throws jakarta.servlet.jsp.JspException
       閉じタグとサブミット制御に使用するJavaScriptのサブミット情報を出力する。
       
       サブミット制御のJavaScriptの出力が完了する前にサブミットされることを防ぐため、
       サブミット制御のJavaScriptの出力が完了したことを示すマーカを閉じタグの直後に出力する。
       ここで出力したマーカをサブミット関数が参照し、サブミット可否の判定に使用する。
      
       CSRFトークンがリクエスト属性に存在すればhiddenタグに追加する。
      
       楽観的ロックで使用するバージョン番号をhiddenタグに追加する。
       
       ウィンドウスコープ変数のプレフィックスが指定されている場合は、リクエストパラメータからhiddenタグを出力する。
       リクエストパラメータからhiddenタグを出力する際は、既に入力項目として出力されているパラメータは除く。
       
       hiddenタグは、改竄や情報漏洩などのセキュリティ上の問題となるケースがあるため、デフォルトで暗号化して出力する。
       ただし、下記のどちらかの条件を満たす場合は暗号化せずに平文でhiddenタグを出力する。
       ・hiddenタグの暗号化機能を「使用しない」に設定している。
       ・フォーム内のリクエストIDが設定された暗号化を行わないリクエストIDに全て含まれる。
       上記設定は、カスタムタグのデフォルト値設定から行う。
       
       useTokenにtrueが指定されている場合、又はuseTokenが未指定で確認画面の場合は、
       トークンを生成しhiddenタグを出力する。
       
       ただし、method属性がgetかつCustomTagConfigのuseGetRequestがtrueの場合は、上記処理は行わずに閉じタグのみを出力して処理を終了する。
       
      Specified by:
      doEndTag in interface jakarta.servlet.jsp.tagext.Tag
      Overrides:
      doEndTag in class jakarta.servlet.jsp.tagext.TagSupport
      Throws:
      jakarta.servlet.jsp.JspException
    • getTagName

      protected String getTagName()
      タグ名を取得する。
      Specified by:
      getTagName in class GenericAttributesTagSupport
      Returns:
      タグ名