Class TagUtil

java.lang.Object
nablarch.common.web.tag.TagUtil

public final class TagUtil extends Object
カスタムタグの作成を助けるユーティリティ。
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final String
    NablarchTagHandler で展開する際に使用する、許容する名称のリストを保持するキー名のプレフィクス
    static final String
    NablarchTagHandler で展開する際に使用する、許容する値のリストを保持するキー名のプレフィクス
    static final String
    NablarchTagHandler で展開する属性名のリストのキー名
  • Method Summary

    Modifier and Type
    Method
    Description
    static String
    指定されたURIにGETパラメータで静的リソースのバージョンを付加する。
    static Object
    getValue() メソッドの返すオブジェクトについて、オブジェクトそのものまたはプロパティを選択して返す
    基本的には指定されたスコープのname属性のプロパティを取得するが、 ただし、splitName が1つの場合、特別にオブジェクトそのものを返す。
    static boolean
    contains(Collection<?> values, Object value)
    選択項目において選択した値に、選択肢の値が含まれているかを判定する。
    static List<String>
    createCompositeKeyValueList(jakarta.servlet.jsp.PageContext pageContext, String prefix, List<String> keyNames)
    リクエストスコープまたはパラメータに入った値からマルチキーを復元する。
    static String
    終了タグを作成する。
    static FormatSpec
    "データタイプ{パターン}"形式のフォーマット文字列からFormatSpecを生成する。
    static String
    hiddenタグを作成する。
    static String
    createLabelTag(String type, String content, String forAttribute, String cssClass)
    labelタグを作成する。
    static String
    createScriptTag(jakarta.servlet.jsp.PageContext pageContext, String javaScript)
    JavaScriptを含めるscriptタグを作成する。
    static String
    createStartTag(String tagName, HtmlAttributes attributes)
    開始タグを作成する。
    static String
    createTagWithBody(String tagName, HtmlAttributes attributes, String body)
    ボディを持つタグを作成する。
    static String
    ボディを持たないタグを作成する。
    static void
    editClassAttribute(jakarta.servlet.jsp.PageContext pageContext, HtmlAttributes attributes, String cssClass)
    class属性を編集する。
    static String
    editClassAttributeForError(jakarta.servlet.jsp.PageContext pageContext, HtmlAttributes attributes, String cssClass, Set<String> nameAlias)
    name属性又はname属性のエイリアスに対応するエラーメッセージが存在する場合は、class属性に指定されたCSSクラス名を追記する。
    static String
    encodeUri(jakarta.servlet.jsp.PageContext pageContext, String uri, Boolean secure)
    URIの指定方法に応じてURIを組み立て、エンコードしたURIを返す。
    static String
    HTMLエスケープを行う。
    static String
    escapeHtml(Object s, boolean withHtmlFormat)
    HTMLエスケープを行う。
    static String
    escapeHtml(Object s, boolean withHtmlFormat, List<String> safeTags, List<String> safeAttributes)
    HTMLエスケープを行う。
    static String
    JavaScriptの文字列として使用する向けにエスケープを行う。
    static Message
    findMessage(jakarta.servlet.jsp.PageContext pageContext, String name)
    リクエストスコープに設定されているメッセージリストからプロパティ名でメッセージを検索する。

    検索対象のメッセージは、ValidationResultMessage型のみ。
    static Message
    findMessage(jakarta.servlet.jsp.PageContext pageContext, Set<String> names)
    リクエストスコープに設定されているメッセージリストからプロパティ名でメッセージを検索する。

    検索対象のメッセージは、ValidationResultMessage型のみ。
    static String
    formatDate(Date date, String pattern)
    日付をフォーマットする。
    static String
    formatDateTime(Date date, String pattern)
    日時をフォーマットする。
    static String
    formatValue(jakarta.servlet.jsp.PageContext pageContext, String name, FormatSpec formatSpec, Object value)
    値をフォーマットする。
    static String
    generateUniqueName(jakarta.servlet.jsp.PageContext pageContext, String tagKey)
    画面上のタグのユニークな名前を生成する。
    値のフォーマット:"nablarch_<タグを識別するキー><連番>"
    static String
    getCodeLabel(String labelPattern, String codeId, String value, String optionColumnName)
    コード値に対応するラベルを取得する。

    labelPatternにnullが指定された場合は、CustomTagConfig.getCodeLabelPattern()を使用する。
    static Set<String>
    カンマ区切りの値を分割して返す。
    static List<String>
    カンマ区切りの値を分割して返す。
    static String
    getCspNonce(jakarta.servlet.jsp.PageContext pageContext)
    リクエストスコープに格納されているnonceを取得する。取得できなかった場合はnullを返却する
    カスタムタグのデフォルト値を取得する。
    getFormContext(jakarta.servlet.jsp.PageContext pageContext)
    ページコンテキストからフォームコンテキストを取得する。
    static List<Message>
    getMessages(jakarta.servlet.jsp.PageContext pageContext)
    リクエストスコープからメッセージリストを取得する。
    static Collection<?>
    getMultipleValues(jakarta.servlet.jsp.PageContext pageContext, String name)
    多値としてname属性に対応するvalue属性をリクエストパラメータ又は変数スコープから取得する。
    取得方法については、getValue(PageContext, String, boolean)メソッドのJavaDocを参照。
    static Collection<?>
    getMultipleValuesOnScope(jakarta.servlet.jsp.PageContext pageContext, String name)
    多値としてname属性に対応するvalue属性を変数スコープから取得する。
    取得方法については、getValue(PageContext, String, boolean)メソッドのJavaDocを参照。
    static int
    getOrderOfAppearance(jakarta.servlet.jsp.PageContext pageContext, String tagKey)
    画面上のタグの出現順を取得する。
    static String
    getOriginalAttribute(HtmlAttributes attributes, HtmlAttribute attribute, String separator)
    元の属性値の末尾にセパレータを付加した値を取得する。
    このメソッドは、属性に値を追記する場合に使用する。
    static Object
    getPropertyFromObject(Object valueObject, String propertyName)
    JavaBeans形式のオブジェクトまたはMapからプロパティ名に合致するオブジェクトを取得する。
    static String
    getResourcePathForLanguage(jakarta.servlet.jsp.PageContext pageContext, String path)
    言語対応のリソースパスを取得する。
    static Object
    getSingleValue(jakarta.servlet.jsp.PageContext pageContext, String name)
    単一値としてname属性に対応するvalue属性をリクエストパラメータ又は変数スコープから取得する。
    static Object
    getSingleValueOnScope(jakarta.servlet.jsp.PageContext pageContext, String name)
    単一値としてname属性に対応するvalue属性を変数スコープから取得する。
    static Object
    getValue(jakarta.servlet.jsp.PageContext pageContext, String name, boolean includeRequestParameter)
    name属性に対応するvalue属性を取得する。

    name属性は、EL式に似た下記のルールにより、オブジェクト階層のアクセスをサポートする。 オブジェクト又はMapのプロパティへのアクセスは、ドット区切りを指定する。 List又は配列の要素へのアクセスは、角括弧(括弧内にインデックスを表す数字)を指定する。
    オブジェクト階層のルートにあたるオブジェクトは、下記の順に検索し、最初に見つかった値を使用する。 Servlet APIのページスコープ Servlet APIのリクエストスコープ Servlet APIのリクエストパラメータ(includeRequestParameterがtrueの場合のみ) Servlet APIのセッションスコープ
    static boolean
    hasCspNonce(jakarta.servlet.jsp.PageContext pageContext)
    リクエストスコープにCSP対応用のnonceが保存されているか否か確認する。 nonceが保存されている場合、trueを返却する。
    static boolean
    isConfirmationPage(jakarta.servlet.jsp.PageContext pageContext)
    JSPが生成する画面が確認画面であるか否かを判定する。
    static boolean
    jsSupported(jakarta.servlet.jsp.PageContext pageContext)
    Javascript使用不可のフラグが設定されていればtrueを返す。 このフラグは KeitaiAccessHandler によって設定される。
    static void
    overrideUriAttribute(jakarta.servlet.jsp.PageContext pageContext, HtmlAttributes attributes, HtmlAttribute attribute, Boolean secure)
    URIを指定する属性に対して、元のURIをエンコードしたURIで上書く。
    エンコード処理は、encodeUri(PageContext, String, Boolean)に処理を移譲する。
    static void
    print(jakarta.servlet.jsp.PageContext pageContext, String content)
    作成したタグを出力する。
    static void
    registerOnclickForSubmission(jakarta.servlet.jsp.PageContext pageContext, String tagName, HtmlAttributes attributes, boolean suppressDefaultSubmit)
    static void
    nablarch_hidden に保存したキーと値のセットを復元する。
    static void
    setConfirmationPage(jakarta.servlet.jsp.PageContext pageContext)
    JSPが生成する画面が確認画面であることを設定する。
    このメソッド呼び出し後のJSPでは、入力項目のカスタムタグが確認画面用の出力を行う。
    static void
    setFormContext(jakarta.servlet.jsp.PageContext pageContext, FormContext formContext)
    ページコンテキストにフォームコンテキストを設定する。
    static void
    setInputPage(jakarta.servlet.jsp.PageContext pageContext)
    JSPが生成する画面が入力画面であることを設定する。
    このメソッド呼び出し後のJSPでは、入力項目のカスタムタグが入力画面用の出力を行う。
    static void
    setNameToFormContext(jakarta.servlet.jsp.PageContext pageContext, HtmlAttributes attributes)
    フォームコンテキストに入力項目のname属性を設定する。
    JSPが入力画面の場合のみname属性を設定する。
    static void
    setSubmissionInfoToFormContext(jakarta.servlet.jsp.PageContext pageContext, HtmlAttributes attributes, SubmissionInfo.SubmissionAction action, String uri, boolean allowDoubleSubmission, String requestId, DisplayMethod displayMethod)
    フォームコンテキストにサブミット情報を設定する。
    static void
    setSubmissionInfoToFormContext(jakarta.servlet.jsp.PageContext pageContext, HtmlAttributes attributes, SubmissionInfo.SubmissionAction action, String uri, boolean allowDoubleSubmission, String requestId, DisplayMethod displayMethod, String popupWindowName, String popupOption)
    フォームコンテキストにサブミット情報を設定する。
    ポップアップのオプション情報を指定できる。 指定されたオプション情報がnullであった場合には、代わりにデフォルト値を使用する。 引数のオプション情報がnullで、デフォルト値も登録されていない場合は、nullが使用される。 (オプションなし)
    static String
    storeKeyValueSetToHidden(jakarta.servlet.jsp.PageContext pageContext, String name, Object valueObject, List<String> keyNames, String namePrefix)
    オブジェクトに紐付くキーと値を nablarch_hidden に保存する。
    保存した値は戻り値の文字列が引数 name で指定したキーでリクエストパラメータに入っていれば、復元できる。

    値の保存は単純なカンマ区切りで行うため、値の中にカンマが含まれている場合は保持できない。

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • PARAM_VALUES_KEY_PREFIX

      public static final String PARAM_VALUES_KEY_PREFIX
      NablarchTagHandler で展開する際に使用する、許容する値のリストを保持するキー名のプレフィクス
      See Also:
    • VAR_NAMES_KEY

      public static final String VAR_NAMES_KEY
      NablarchTagHandler で展開する属性名のリストのキー名
      See Also:
    • PARAM_NAMES_KEY_PREFIX

      public static final String PARAM_NAMES_KEY_PREFIX
      NablarchTagHandler で展開する際に使用する、許容する名称のリストを保持するキー名のプレフィクス
      See Also:
  • Method Details

    • getCommaSeparatedValue

      public static Set<String> getCommaSeparatedValue(String value)
      カンマ区切りの値を分割して返す。
      Parameters:
      value - カンマ区切りの値
      Returns:
      カンマ区切りの値を分割した値
    • getCommaSeparatedValueAsList

      public static List<String> getCommaSeparatedValueAsList(String value)
      カンマ区切りの値を分割して返す。
      Parameters:
      value - カンマ区切りの値
      Returns:
      カンマ区切りの値を分割した値
    • getCustomTagConfig

      public static CustomTagConfig getCustomTagConfig()
      カスタムタグのデフォルト値を取得する。
      Returns:
      カスタムタグのデフォルト値
    • print

      @Published(tag="architect") public static void print(jakarta.servlet.jsp.PageContext pageContext, String content) throws jakarta.servlet.jsp.JspException
      作成したタグを出力する。
      Parameters:
      pageContext - ページコンテキスト
      content - コンテンツ
      Throws:
      jakarta.servlet.jsp.JspException - JSP例外
    • createStartTag

      public static String createStartTag(String tagName, HtmlAttributes attributes)
      開始タグを作成する。
      Parameters:
      tagName - タグ名
      attributes - 属性
      Returns:
      オープンタグ
    • createEndTag

      public static String createEndTag(String tagName)
      終了タグを作成する。
      Parameters:
      tagName - タグ名
      Returns:
      終了タグ
    • createTagWithBody

      public static String createTagWithBody(String tagName, HtmlAttributes attributes, String body)
      ボディを持つタグを作成する。
      Parameters:
      tagName - タグ名
      attributes - 属性
      body - ボディ
      Returns:
      ボディを持つタグ
    • createTagWithoutBody

      public static String createTagWithoutBody(String tagName, HtmlAttributes attributes)
      ボディを持たないタグを作成する。
      Parameters:
      tagName - タグ名
      attributes - 属性
      Returns:
      ボディを持たないタグ
    • createHiddenTag

      public static String createHiddenTag(String name, String value)
      hiddenタグを作成する。
      Parameters:
      name - name属性
      value - value属性
      Returns:
      hiddenタグ
    • createLabelTag

      public static String createLabelTag(String type, String content, String forAttribute, String cssClass)
      labelタグを作成する。
      Parameters:
      type - labelタグが対応するinputタグのtype属性
      content - labelタグの内容
      forAttribute - for属性。未指定の場合はnull
      cssClass - CSSクラス名
      Returns:
      labelタグ
    • createScriptTag

      public static String createScriptTag(jakarta.servlet.jsp.PageContext pageContext, String javaScript)
      JavaScriptを含めるscriptタグを作成する。

      scriptタグのtype属性に"text/javascript"を指定する。 さらに、CustomTagConfig.getScriptBodyPrefix()CustomTagConfig.getScriptBodySuffix()を 指定されたJavaScriptの前後に付加する。

      CustomTagConfigのデフォルト値を使用する場合のscriptタグの作成例を下記に示す。

       
       <script type="text/javascript">
       //<![CDATA[
           (ここに指定されたJavaScriptがくる)
       //]]>
       </script>
       
       

      また、セキュアハンドラでnonceが生成されていた場合は、scriptタグにnonce属性を自動で付加する。

       
       <script type="text/javascript" nonce="[セキュアハンドラで生成したnonce]">
       //<![CDATA[
           (ここに指定されたJavaScriptがくる)
       //]]>
       </script>
       
       
      Parameters:
      pageContext - ページコンテキスト
      javaScript - scriptタグのボディに指定するJavaScript
      Returns:
      scriptタグ
    • hasCspNonce

      public static boolean hasCspNonce(jakarta.servlet.jsp.PageContext pageContext)
      リクエストスコープにCSP対応用のnonceが保存されているか否か確認する。 nonceが保存されている場合、trueを返却する。
      Parameters:
      pageContext - ページコンテキスト
      Returns:
      リクエストスコープにCSP対応用のnonceが保存されている場合true
    • getCspNonce

      public static String getCspNonce(jakarta.servlet.jsp.PageContext pageContext)
      リクエストスコープに格納されているnonceを取得する。取得できなかった場合はnullを返却する
      Parameters:
      pageContext - ページコンテキスト
      Returns:
      リクエストスコープに格納されているnonce
    • generateUniqueName

      public static String generateUniqueName(jakarta.servlet.jsp.PageContext pageContext, String tagKey)
      画面上のタグのユニークな名前を生成する。
      値のフォーマット:"nablarch_<タグを識別するキー><連番>"
      Parameters:
      pageContext - ページコンテキスト
      tagKey - タグを識別するキー
      Returns:
      画面上のタグのユニークな名前
    • getOrderOfAppearance

      public static int getOrderOfAppearance(jakarta.servlet.jsp.PageContext pageContext, String tagKey)
      画面上のタグの出現順を取得する。
      Parameters:
      pageContext - ページコンテキスト
      tagKey - タグを識別するキー
      Returns:
      画面上のタグの出現順
    • createFormatSpec

      public static FormatSpec createFormatSpec(String format)
      "データタイプ{パターン}"形式のフォーマット文字列からFormatSpecを生成する。

      パターンの付加情報を区切りセパレータには、CustomTagConfig.getPatternSeparator()を指定する。

      Parameters:
      format - "データタイプ{パターン}"形式のフォーマット文字列
      Returns:
      FormatSpec
    • formatValue

      public static String formatValue(jakarta.servlet.jsp.PageContext pageContext, String name, FormatSpec formatSpec, Object value)
      値をフォーマットする。
      
       フォーマットは"データタイプ{パターン}"形式で指定する。
       フレームワークがデフォルトでサポートしているフォーマットを下記に示す。
      
       yyyymmdd:
         年月日のフォーマット。
         値はyyyyMMdd形式の文字列を指定する。
         パターンにはjava.text.SimpleDateFormatが規定している構文を指定する。
         パターン文字には、y(年)、M(月)、d(月における日)のみ指定可能。
         パターン文字列を省略した場合はCustomTagConfigに設定されたデフォルトのパターンを
         使用する。
      
         また、パターンの後に区切り文字"|"を使用してフォーマットのロケールを付加することができる。
         ロケールを明示的に指定しない場合は、ThreadContextのロケール設定値を使用する。
         ThreadContextも設定されていない場合は、システムデフォルトロケール値を使用する。
      
         例:
           yyyymmdd --> デフォルトのパターンとThreadContextに設定されたロケールを使用する。
           yyyymmdd{yyyy/MMM/dd} --> 明示的にパターンを指定し、ThreadContextに設定されたロケールを使用する
           yyyymmdd{|ja} --> デフォルトのパターンを使用し、ロケールのみ指定する場合。
           yyyymmdd{yyyy年MM月d日(E)|ja} --> パターン、ロケールの両方を明示的に指定する場合。
      
       dateTime:
         値はjava.util.Date型を指定する。
         パターンにはjava.text.SimpleDateFormatが規定している構文を指定する。
         パターンには区切り文字"|"を使用してロケールおよびタイムゾーンを付加することができる。
         ロケールおよびタイムゾーンはこの順番でパターンの末尾に付加する。
         CustomTagConfigを使用して、パターンのデフォルト値の設定と、
         区切り文字"|"の変更を行うことができる。
         タイムゾーンが指定されなかった場合はThreadContextに設定されたタイムゾーンが使用される。
      
         例:
           dateTime --> デフォルトのパターンとThreadContextに設定されたロケールおよびタイムゾーンを使用する場合。
           dateTime{|ja|Asia/Tokyo} --> デフォルトのパターンを使用し、ロケールおよびタイムゾーンのみ指定する場合。
           dateTime{yyyy年MMM月d日(E) a hh:mm|ja|America/New_York} --> パターン、ロケール、タイムゾーンを全て指定する場合。
           dateTime{yy/MM/dd HH:mm:ss} --> ThreadContextに設定されたロケールとタイムゾーンを使用し、パターンのみ指定する場合。
           dateTime{yy/MM/dd HH:mm:ss||Asia/Tokyo} --> パターンとタイムゾーンを指定する場合。
      
       decimal:
         10進数のフォーマット。
         値はjava.lang.Number型又は数字の文字列を指定する。
         数字の文字列の場合は、カンマを取り除いた後でフォーマットする。
         パターンにはjava.text.DecimalFormatが規定している構文を指定する。
         パターンには区切り文字"|"を使用して言語を指定することができる。
         言語はパターンの末尾に付加する。
         CustomTagConfigを使用して、区切り文字"|"の変更を行うことができる。
         言語が指定されなかった場合はThreadContextに設定された言語が使用される。
         例:
         decimal{###,###,###.000} --> ThreadContextに設定された言語を使用し、パターンのみ指定する場合。
         decimal{###,###,###.000|ja} --> パターンと言語を指定する場合。
      
       フォーマットは、ValueFormatterを実装したクラスが行う。
       実装したクラスをリポジトリに登録することでフォーマットを変更することができる。
       リポジトリへの登録は、Map型でデータタイプ名をキーに、ValueFormatterを実装したクラスを値に指定する。
       フレームワークがデフォルトでサポートしているフォーマットに対する設定例を下記に示す。
       フォーマッタのマップは、"valueFormatters"という名前でリポジトリに登録する。
      
       
       <map name="valueFormatters">
           <entry key="yyyymmdd">
               <value-component class="nablarch.common.web.tag.YYYYMMDDFormatter" />
           </entry>
           <entry key="dateTime">
               <value-component class="nablarch.common.web.tag.DateTimeFormatter" />
           </entry>
           <entry key="decimal">
               <value-component class="nablarch.common.web.tag.DecimalFormatter" />
           </entry>
       </map>
       
      
       リポジトリにフォーマッタが登録されていない場合は、フレームワークがデフォルトでサポートしている
       フォーマットを使用する。
      
       フォーマットで例外が発生した場合は、指定された値のtoStringメソッドを呼び出した結果を返す。
      
       
      Parameters:
      pageContext - ページコンテキスト
      name - name属性の値
      formatSpec - valueFormat属性の値
      value - 値
      Returns:
      フォーマット済みの値
    • formatDate

      public static String formatDate(Date date, String pattern)
      日付をフォーマットする。
      
       値はyyyyMMdd形式またはパターン形式の文字列を指定する。
       パターンにはjava.text.SimpleDateFormatが規定している構文を指定する。
       パターン文字には、y(年)、M(月)、d(月における日)のみ指定可能。
       パターン文字列を省略した場合は カスタムタグのデフォルト値の設定 に設定されたデフォルトのパターンが使用される。
       また、パターンの後に区切り文字”|”を使用してフォーマットのロケールを付加することができる。
       ロケールを明示的に指定しない場合は、ThreadContextのロケール設定値を使用する。
       例:
       null もしくは 空文字 --> デフォルトのパターンとThreadContextに設定されたロケールを使用する場合。
       "yyyymmdd" --> デフォルトのパターンとThreadContextに設定されたロケールを使用する。
       "yyyymmdd{yyyy/MM/dd}" --> 明示的に指定されたパターンと、ThreadContextに設定されたロケールを使用する。
       "yyyymmdd{|ja}" --> デフォルトのパターンを使用し、ロケールのみ指定する場合。
       "yyyymmdd{yyyy年MM月d日|ja}" --> パターン、ロケールの両方を明示的に指定する場合。
       
      Parameters:
      date - 日付
      pattern - フォーマット書式文字列
      Returns:
      フォーマット済み文字
    • formatDateTime

      public static String formatDateTime(Date date, String pattern)
      日時をフォーマットする。
      
       日時のフォーマット。
       値はjava.util.Date型を指定する。
       パターンにはjava.text.SimpleDateFormatが規定している構文を指定する。
       パターンには区切り文字"|"を使用してロケールおよびタイムゾーンを付加することができる。
       ロケールおよびタイムゾーンはこの順番でパターンの末尾に付加する。
       CustomTagConfigを使用して、パターンのデフォルト値の設定と、
       区切り文字"|"の変更を行うことができる。
       タイムゾーンが指定されなかった場合はThreadContextに設定されたタイムゾーンが使用される。
       例:
       null もしくは 空文字 --> デフォルトのパターンとThreadContextに設定されたロケールおよびタイムゾーンを使用する場合。
       "|ja|Asia/Tokyo" --> デフォルトのパターンを使用し、ロケールおよびタイムゾーンのみ指定する場合。
       "yyyy年MMM月d日(E) a hh:mm|ja|America/New_York" --> パターン、ロケール、タイムゾーンを全て指定する場合。
       "yy/MM/dd HH:mm:ss" --> ThreadContextに設定されたロケールとタイムゾーンを使用し、パターンのみ指定する場合。
       "yy/MM/dd HH:mm:ss||Asia/Tokyo" --> パターンとタイムゾーンを指定する場合。
       
      Parameters:
      date - 日時
      pattern - フォーマット書式文字列
      Returns:
      フォーマット済み文字
    • overrideUriAttribute

      public static void overrideUriAttribute(jakarta.servlet.jsp.PageContext pageContext, HtmlAttributes attributes, HtmlAttribute attribute, Boolean secure)
      URIを指定する属性に対して、元のURIをエンコードしたURIで上書く。
      エンコード処理は、encodeUri(PageContext, String, Boolean)に処理を移譲する。
      Parameters:
      pageContext - ページコンテキスト
      attributes - 属性
      attribute - 対象とする属性
      secure - httpsにする場合はtrue、しない場合はfalse。指定しない場合はnull
    • encodeUri

      public static String encodeUri(jakarta.servlet.jsp.PageContext pageContext, String uri, Boolean secure) throws IllegalArgumentException, IllegalStateException
      URIの指定方法に応じてURIを組み立て、エンコードしたURIを返す。
       URIは下記のいずれかの方法で指定する。
      
       絶対URL:
         http又はhttpsから始まるパスを指定する。
         他システム連携などでアプリケーションとホストが異なるURIを指定する場合に使用する。
         指定されたパスをそのまま使用する。
      
       コンテキストからの相対パス
         /(スラッシュ)から始まるパスを指定する。
         アプリケーション内のパスを指定する場合に使用する。
         指定されたパスの先頭にコンテキストパスを付加して使用する。
      
       現在のパスからの相対パス
         /(スラッシュ)から始まらないパス(絶対URLを除く)を指定する。
         アプリケーション内のパスを指定する場合に使用する。
         指定されたパスをそのまま使用する。
      
       コンテキストからの相対パスを指定している場合は、secure引数を指定することでURIのhttpsとhttpを切り替える。
       secure引数が指定された場合は、カスタムタグのデフォルト値(ポート番号、ホスト)とコンテキストパスを使用してURIを組み立てる。
       URIが/(スラッシュ)から始まる場合のみ、コンテキストパスを付加する。
      
       エンコード前のURIが絶対URLでない場合は
       getResourcePathForLanguage(PageContext, String)メソッドを呼び出し、
       言語対応のリソースパスに変換する。
      
       エンコード処理は、HttpServletResponse.encodeURL(String)に処理を移譲する。
      
       
      Parameters:
      pageContext - ページコンテキスト
      uri - URI
      secure - httpsにする場合はtrue、しない場合はfalse。指定しない場合はnull
      Returns:
      エンコード済みのURI
      Throws:
      IllegalArgumentException - secure引数が指定されたにも関わらず、絶対URL又は現在のパスからの相対パスが指定された場合
      IllegalStateException - secure引数が指定されたにも関わらず、ホスト(カスタムタグのデフォルト値)が設定されていない場合
    • getResourcePathForLanguage

      public static String getResourcePathForLanguage(jakarta.servlet.jsp.PageContext pageContext, String path)
      言語対応のリソースパスを取得する。

      CustomTagConfigに指定されたResourcePathRuleに処理を委譲する。

      Parameters:
      pageContext - ページコンテキスト
      path - リソースパス
      Returns:
      言語対応のリソースパス
    • registerOnclickForSubmission

      public static void registerOnclickForSubmission(jakarta.servlet.jsp.PageContext pageContext, String tagName, HtmlAttributes attributes, boolean suppressDefaultSubmit)
      クリック時のサブミット情報を登録し、JavaScriptを生成する。 setSubmissionInfoToFormContext(jakarta.servlet.jsp.PageContext, nablarch.common.web.tag.HtmlAttributes, nablarch.common.web.tag.SubmissionInfo.SubmissionAction, java.lang.String, boolean, java.lang.String, nablarch.common.web.tag.DisplayMethod) を使ったサブミット情報登録後に呼び出すこと。
      
       リクエストスコープにCSP対応用のnonceが保存されているか否かで動作が変わる。
      
       ・CSP対応用のnonceが保存されていた場合
        ・FormTagが生成するscriptタグの一部として出力する
        ・本メソッド実行時には出力せずフォームコンテキストへの登録のみとし、FormTagの処理でためこんだスクリプトを一括で出力する
       ・CSP対応用のnonceが保存されていない場合
        ・対象のタグのonclick属性としてイベントハンドラを出力する
      
       なお、いずれの場合も属性にonclickが指定されている場合、またはsuppressDefaultSubmitプロパティが
       trueの場合はスクリプトを生成しない。
       
      Parameters:
      pageContext - ページコンテキスト
      tagName - クリック対象のタグ名
      attributes - 属性
      suppressDefaultSubmit - Nablarchのデフォルトのsubmit関数呼び出しを抑制するか否か。trueの場合は抑制する
    • editClassAttributeForError

      public static String editClassAttributeForError(jakarta.servlet.jsp.PageContext pageContext, HtmlAttributes attributes, String cssClass, Set<String> nameAlias)
      name属性又はname属性のエイリアスに対応するエラーメッセージが存在する場合は、class属性に指定されたCSSクラス名を追記する。
      Parameters:
      pageContext - ページコンテキスト
      attributes - 属性
      cssClass - CSSクラス名
      nameAlias - name属性のエイリアス
      Returns:
      追記したCSSクラス名。追記しなかった場合はnull
    • editClassAttribute

      public static void editClassAttribute(jakarta.servlet.jsp.PageContext pageContext, HtmlAttributes attributes, String cssClass)
      class属性を編集する。
       指定されたCSSクラス名を元の値に付加する。
       既に指定されたCSSクラス名が含まれている場合は付加しない。
       
      Parameters:
      pageContext - ページコンテキスト
      attributes - 属性
      cssClass - 追記するCSSクラス名
    • getOriginalAttribute

      public static String getOriginalAttribute(HtmlAttributes attributes, HtmlAttribute attribute, String separator)
      元の属性値の末尾にセパレータを付加した値を取得する。
      このメソッドは、属性に値を追記する場合に使用する。
      Parameters:
      attributes - 属性
      attribute - 値を取得する属性
      separator - セパレータ
      Returns:
      元の属性値の末尾にセパレータを付加した値。属性値が未指定の場合は空文字
    • setFormContext

      public static void setFormContext(jakarta.servlet.jsp.PageContext pageContext, FormContext formContext)
      ページコンテキストにフォームコンテキストを設定する。

      フォームのname属性が重複している場合は例外を送出する。

      Parameters:
      pageContext - ページコンテキスト
      formContext - フォームコンテキスト
    • getFormContext

      public static FormContext getFormContext(jakarta.servlet.jsp.PageContext pageContext)
      ページコンテキストからフォームコンテキストを取得する。
      Parameters:
      pageContext - ページコンテキスト
      Returns:
      フォームコンテキスト
    • setNameToFormContext

      public static void setNameToFormContext(jakarta.servlet.jsp.PageContext pageContext, HtmlAttributes attributes)
      フォームコンテキストに入力項目のname属性を設定する。
      JSPが入力画面の場合のみname属性を設定する。
      Parameters:
      pageContext - ページコンテキスト
      attributes - 属性
    • setSubmissionInfoToFormContext

      public static void setSubmissionInfoToFormContext(jakarta.servlet.jsp.PageContext pageContext, HtmlAttributes attributes, SubmissionInfo.SubmissionAction action, String uri, boolean allowDoubleSubmission, String requestId, DisplayMethod displayMethod)
      フォームコンテキストにサブミット情報を設定する。
      Parameters:
      pageContext - ページコンテキスト
      attributes - 属性
      action - サブミット時の動作
      uri - サブミット先のURI
      allowDoubleSubmission - 二重サブミットを許可するか否か
      requestId - サブミット時のリクエストID
      displayMethod - 表示制御方法
    • setSubmissionInfoToFormContext

      public static void setSubmissionInfoToFormContext(jakarta.servlet.jsp.PageContext pageContext, HtmlAttributes attributes, SubmissionInfo.SubmissionAction action, String uri, boolean allowDoubleSubmission, String requestId, DisplayMethod displayMethod, String popupWindowName, String popupOption)
      フォームコンテキストにサブミット情報を設定する。
      ポップアップのオプション情報を指定できる。 指定されたオプション情報がnullであった場合には、代わりにデフォルト値を使用する。 引数のオプション情報がnullで、デフォルト値も登録されていない場合は、nullが使用される。 (オプションなし)
      Parameters:
      pageContext - ページコンテキスト
      attributes - 属性
      action - サブミット時の動作
      uri - サブミット先のURI
      allowDoubleSubmission - 二重サブミットを許可するか否か
      requestId - サブミット時のリクエストID
      displayMethod - 表示制御方法
      popupWindowName - ポップアップのウィンドウ名(nullの場合、デフォルト値を使用)
      popupOption - ポップアップのオプション情報(nullの場合、デフォルト値を使用)
      See Also:
    • getSingleValueOnScope

      public static Object getSingleValueOnScope(jakarta.servlet.jsp.PageContext pageContext, String name)
      単一値としてname属性に対応するvalue属性を変数スコープから取得する。
       単一値でない場合はINFOレベルでログ出力しnullを返す。
       取得方法については、getValue(PageContext, String, boolean)メソッドのJavaDocを参照。
       
      Parameters:
      pageContext - ページコンテキスト
      name - name属性
      Returns:
      value属性。存在しない場合はnull
    • getSingleValue

      public static Object getSingleValue(jakarta.servlet.jsp.PageContext pageContext, String name)
      単一値としてname属性に対応するvalue属性をリクエストパラメータ又は変数スコープから取得する。
       単一値でない場合はINFOレベルでログ出力しnullを返す。
       取得方法については、getValue(PageContext, String, boolean)メソッドのJavaDocを参照。
       
      Parameters:
      pageContext - ページコンテキスト
      name - name属性
      Returns:
      value属性。存在しない場合はnull
    • getMultipleValuesOnScope

      public static Collection<?> getMultipleValuesOnScope(jakarta.servlet.jsp.PageContext pageContext, String name)
      多値としてname属性に対応するvalue属性を変数スコープから取得する。
      取得方法については、getValue(PageContext, String, boolean)メソッドのJavaDocを参照。
      Parameters:
      pageContext - ページコンテキスト
      name - name属性
      Returns:
      value属性。存在しない場合は空のリスト
    • getMultipleValues

      public static Collection<?> getMultipleValues(jakarta.servlet.jsp.PageContext pageContext, String name)
      多値としてname属性に対応するvalue属性をリクエストパラメータ又は変数スコープから取得する。
      取得方法については、getValue(PageContext, String, boolean)メソッドのJavaDocを参照。
      Parameters:
      pageContext - ページコンテキスト
      name - name属性
      Returns:
      value属性。存在しない場合は空のリスト
    • getValue

      public static Object getValue(jakarta.servlet.jsp.PageContext pageContext, String name, boolean includeRequestParameter)
      name属性に対応するvalue属性を取得する。

      name属性は、EL式に似た下記のルールにより、オブジェクト階層のアクセスをサポートする。
      • オブジェクト又はMapのプロパティへのアクセスは、ドット区切りを指定する。
      • List又は配列の要素へのアクセスは、角括弧(括弧内にインデックスを表す数字)を指定する。

      オブジェクト階層のルートにあたるオブジェクトは、下記の順に検索し、最初に見つかった値を使用する。
      1. Servlet APIのページスコープ
      2. Servlet APIのリクエストスコープ
      3. Servlet APIのリクエストパラメータ(includeRequestParameterがtrueの場合のみ)
      4. Servlet APIのセッションスコープ
      Parameters:
      pageContext - ページコンテキスト
      name - name属性
      includeRequestParameter - 取得先にリクエストパラメータを含める場合はtrue
      Returns:
      value属性。存在しない場合はnull
      See Also:
    • chooseObjectOrProperty

      public static Object chooseObjectOrProperty(Object obj, String[] splitName)
      getValue() メソッドの返すオブジェクトについて、オブジェクトそのものまたはプロパティを選択して返す
      基本的には指定されたスコープのname属性のプロパティを取得するが、 ただし、splitName が1つの場合、特別にオブジェクトそのものを返す。
      Parameters:
      obj - プロパティを取得する元になるオブジェクト
      splitName - ドットで区切ったname属性の値
      Returns:
      splitName が1つの場合、特別にオブジェクト、それ以外はオブジェクトから splitName の最後の文字列と一致するプロパティ
    • contains

      public static boolean contains(Collection<?> values, Object value)
      選択項目において選択した値に、選択肢の値が含まれているかを判定する。
       選択した値と選択肢の値は、ともにObject.toString()してから等しいか判定する。
       選択項目の選択状態を判定する際に使用する。
       
      Parameters:
      values - 選択した値
      value - 選択肢の値
      Returns:
      選択した値に選択肢の値が含まれている場合はtrue
    • escapeHtml

      @Published(tag="architect") public static String escapeHtml(Object s)
      HTMLエスケープを行う。
       このメソッドは、escapeHtml(Object, boolean)に処理を委譲し、
       セキュリティ上問題のあるHTMLエスケープ処理のみを行う。
       このメソッドでは、改行変換と半角スペース変換を行わない。
      
       このメソッドは、HTMLタグの属性値に対するHTMLエスケープに使用する。
       
      Parameters:
      s - 文字列
      Returns:
      HTMLエスケープ後の文字列
    • escapeHtml

      @Published(tag="architect") public static String escapeHtml(Object s, boolean withHtmlFormat)
      HTMLエスケープを行う。
       セキュリティ上問題のある下記文字の変換を行う。
      
       
       & -> &amp;
       < -> &lt;
       > -> &gt;
       " -> &034;
       ' -> &039;
      
       withHtmlFormatにtrueが指定された場合は、さらに下記の変換を行う。
      
       " "(半角スペース) -> &nbsp;
       \n、\r、\r\n -> brタグ
       
       
      Parameters:
      s - 文字列
      withHtmlFormat - 改行変換と半角スペース変換を行う場合はtrue
      Returns:
      HTMLエスケープ後の文字列
    • escapeHtml

      @Published(tag="architect") public static String escapeHtml(Object s, boolean withHtmlFormat, List<String> safeTags, List<String> safeAttributes)
      HTMLエスケープを行う。
       セキュリティ上問題のある下記文字の変換を行う。
      
       
       & -> &amp;
       < -> &lt;
       > -> &gt;
       " -> &034;
       ' -> &039;
      
       withHtmlFormatにtrueが指定された場合は、さらに下記の変換を行う。
      
       " "(半角スペース) -> &nbsp;
       \n、\r、\r\n -> brタグ
       
       
      Parameters:
      s - 文字列
      withHtmlFormat - 改行変換と半角スペース変換を行う場合はtrue
      safeTags - エスケープ対象外のタグ
      safeAttributes - エスケープ対象外のタグの中で使用することができる属性。 (ここに無い属性が使用されていた場合は、エスケープ対象外のタグでも、 エスケープされる。)
      Returns:
      HTMLエスケープ後の文字列
    • addStaticContentVersion

      public static String addStaticContentVersion(String uri)
      指定されたURIにGETパラメータで静的リソースのバージョンを付加する。

      追加するGETパラメータの形式は以下の通り。

       KEY:ExecutionContext.FW_PREFIX + "static_content_version"
       VALUE:システムリポジトリ(SystemRepository)より取得した静的リソースのバージョン(取得時のキーは、static_content_version)
       
      システムリポジトリから取得した静的リソースバージョンがnullや空文字列の場合には、GETパラメータは付加しない。 設定ファイル(configファイル)への静的リソースバージョンの設定例:
       static_content_version=1.0
       
      Parameters:
      uri - URI
      Returns:
      静的リソースのバージョンをGETパラメータとして付加したURI
    • escapeJavaScriptString

      public static String escapeJavaScriptString(Object s)
      JavaScriptの文字列として使用する向けにエスケープを行う。
       
       HTMLエスケープは下記の変換を行う。
       " -> \"
       ' -> \'
       \ -> \\
       
       
      Parameters:
      s - 文字列
      Returns:
      エスケープ後の文字列
    • getMessages

      public static List<Message> getMessages(jakarta.servlet.jsp.PageContext pageContext)
      リクエストスコープからメッセージリストを取得する。
      Parameters:
      pageContext - ページコンテキスト
      Returns:
      メッセージリストまたはnull
    • findMessage

      public static Message findMessage(jakarta.servlet.jsp.PageContext pageContext, String name)
      リクエストスコープに設定されているメッセージリストからプロパティ名でメッセージを検索する。

      検索対象のメッセージは、ValidationResultMessage型のみ。
      Parameters:
      pageContext - ページコンテキスト
      name - プロパティ名
      Returns:
      メッセージ。見つからない場合はnull
    • findMessage

      public static Message findMessage(jakarta.servlet.jsp.PageContext pageContext, Set<String> names)
      リクエストスコープに設定されているメッセージリストからプロパティ名でメッセージを検索する。

      検索対象のメッセージは、ValidationResultMessage型のみ。
      Parameters:
      pageContext - ページコンテキスト
      names - プロパティ名
      Returns:
      メッセージ。見つからない場合はnull
    • setConfirmationPage

      public static void setConfirmationPage(jakarta.servlet.jsp.PageContext pageContext)
      JSPが生成する画面が確認画面であることを設定する。
      このメソッド呼び出し後のJSPでは、入力項目のカスタムタグが確認画面用の出力を行う。
      Parameters:
      pageContext - ページコンテキスト
    • setInputPage

      public static void setInputPage(jakarta.servlet.jsp.PageContext pageContext)
      JSPが生成する画面が入力画面であることを設定する。
      このメソッド呼び出し後のJSPでは、入力項目のカスタムタグが入力画面用の出力を行う。
      Parameters:
      pageContext - ページコンテキスト
    • isConfirmationPage

      public static boolean isConfirmationPage(jakarta.servlet.jsp.PageContext pageContext)
      JSPが生成する画面が確認画面であるか否かを判定する。
      Parameters:
      pageContext - ページコンテキスト
      Returns:
      確認画面の場合はtrue、確認画面でない場合はfalse
    • getCodeLabel

      public static String getCodeLabel(String labelPattern, String codeId, String value, String optionColumnName)
      コード値に対応するラベルを取得する。

      labelPatternにnullが指定された場合は、CustomTagConfig.getCodeLabelPattern()を使用する。
      Parameters:
      labelPattern - ラベルを整形するパターン。 プレースホルダを下記に示す。
                            $NAME$: コード値に対応するコード名称
                            $SHORTNAME$: コード値に対応するコードの略称
                            $OPTIONALNAME$: コード値に対応するコードのオプション名称
                            $OPTIONALNAME$を使用する場合は、optionColumnName引数の指定が必須となる。
                            $VALUE$: コード値
                            
      codeId - コードID
      value - コード値
      optionColumnName - 取得するオプション名称のカラム名
      Returns:
      コード値に対応するラベル
    • jsSupported

      public static boolean jsSupported(jakarta.servlet.jsp.PageContext pageContext)
      Javascript使用不可のフラグが設定されていればtrueを返す。 このフラグは KeitaiAccessHandler によって設定される。
      Parameters:
      pageContext - ページコンテキスト
      Returns:
      Javascript使用不可のフラグが設定されていればtrue
      See Also:
    • storeKeyValueSetToHidden

      public static String storeKeyValueSetToHidden(jakarta.servlet.jsp.PageContext pageContext, String name, Object valueObject, List<String> keyNames, String namePrefix)
      オブジェクトに紐付くキーと値を nablarch_hidden に保存する。
      保存した値は戻り値の文字列が引数 name で指定したキーでリクエストパラメータに入っていれば、復元できる。

      値の保存は単純なカンマ区切りで行うため、値の中にカンマが含まれている場合は保持できない。
      Parameters:
      pageContext - ページコンテキスト
      name - 保存する名称(リクエストパラメータ)
      valueObject - 保存する値を保持するオブジェクト
      keyNames - 保存する値のキー名のリスト
      namePrefix - 保存する値を保持するオブジェクトを表すプレフィクス
      Returns:
      復元時に使用する、リクエストパラメータに保持する文字列
    • getPropertyFromObject

      public static Object getPropertyFromObject(Object valueObject, String propertyName)
      JavaBeans形式のオブジェクトまたはMapからプロパティ名に合致するオブジェクトを取得する。
      Parameters:
      valueObject - 取得対象のオブジェクト
      propertyName - プロパティ名
      Returns:
      プロパティ名に合致するオブジェクト
    • restoreKeyValueSetFromHidden

      public static void restoreKeyValueSetFromHidden(HttpRequest request)
      nablarch_hidden に保存したキーと値のセットを復元する。
      Parameters:
      request - HttpRequest
    • createCompositeKeyValueList

      public static List<String> createCompositeKeyValueList(jakarta.servlet.jsp.PageContext pageContext, String prefix, List<String> keyNames)
      リクエストスコープまたはパラメータに入った値からマルチキーを復元する。
      Parameters:
      pageContext - ページコンテキスト
      prefix - プレフィクス
      keyNames - マルチキーのキー名のリスト
      Returns:
      復元したマルチキーのリスト