クラス BindTag

java.lang.Object
jakarta.servlet.jsp.tagext.TagSupport
org.iplass.mtp.web.template.tags.BindTag
すべての実装されたインタフェース:
jakarta.servlet.jsp.tagext.IterationTag, jakarta.servlet.jsp.tagext.JspTag, jakarta.servlet.jsp.tagext.Tag, jakarta.servlet.jsp.tagext.TryCatchFinally, Serializable

public class BindTag extends jakarta.servlet.jsp.tagext.TagSupport implements jakarta.servlet.jsp.tagext.TryCatchFinally

Beanに格納されている値、関連するエラーをpageContextにバインドするJSPタグです。

JSPでの利用例を以下に示します。

 <%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
 <%@taglib prefix="m" uri="http://iplass.org/tags/mtp"%>
 
 :
 
 <form>
 <!-- formBeanという名前で参照(RequestやSessionから)されるBeanをバインドします -->
 <m:bind bean="${formBean}">
 
   <!-- formBeanのプロパティuserNameをバインドします。
       ${value}、${name}でformに指定すべきvalue, nameが取得できます。
       また、<m:errors/>を指定することにより、BeanParamMapperでのマッピングエラー、バリデーションエラーを表示可能です。 -->
   <m:bind prop="userName">
   user name : <input type="text" value="${value}" name="${name}"> <m:errors />
   </m:bind>
   
   :
   
   <m:bind prop="mailAddress">
   mail address : <input type="text" value="${value}" name="${name}"> <m:errors />
   </m:bind>
 
 :
 
 </m:bind>
 </form>
 
 

指定可能な属性の説明

属性名Script可デフォルト値説明
bean  バインドするBeanのインスタンスを指定します。
バインドされたBeanは、beanという変数名でpageContextに公開されます。 公開する際の変数名を変更したい場合は、beanVariableNameにて変数名を変更可能です。
beanVariableName beanバインドされたBeanをpageContextに公開する際の変数名を指定可能です。
mappingResult  BeanParamMapperでのバインド結果であるMappingResultのインスタンスを指定可能です。 mappingResultが指定された場合、当該Bean、プロパティに紐付くエラーがバインドされます。
当該属性が未指定の場合、かつautoDetectErrorsがtrueの場合、mappingResultは自動解決されます。
バインドされたMappingResultはmappingResultという変数名でpageContextに公開されます。 公開する際の変数名を変更したい場合は、mappingResultVariableNameにて変数名を変更可能です。
autoDetectErrors trueエラー(mappingResult)を自動解決するか否かを指定可能です。 trueが指定された場合、requestからWebRequestConstants.EXCEPTIONをキーにMappingExceptionを取得し、 存在した場合、その例外からMappingResultのインスタンスを自動的に解決します。
mappingResultVariableName mappingResultバインドされたMappingResultをpageContextに公開する際の変数名を指定可能です。
prop バインドされているBeanのプロパティのパスを指定します。 EL式の記法によって、ネストされたプロパティを指定可能です。
例)
 userName
 accout.mail
 details[0].id
 
当該パスが指定されたbindタグの内側ではpageContextにプロパティ名、値、当該プロパティに関連するエラーがバインドされます。
pageContextに公開される際の変数名は、デフォルトでは以下の名前で公開されます。
  • name : HTTPのパラメータ名として利用可能な形のプロパティのパス。BeanParamMapperのパラメータ名と一致
  • value : プロパティの値の文字列表現。文字列表現はhtmlEscape、formatter設定にて制御可能
  • rawValue : 生のプロパティの値
  • errors : 当該プロパティに関するエラーが存在する場合、エラーメッセージのList<String>
公開する際の変数名を変更したい場合は、propertyNameVariableName、propertyValueVariableName、 propertyRawValueVariableName、errorsVariableNameにて変数名を変更可能です。
また、propには、scriptでの指定が可能なので、Bean内にネストされたリストをバインドしたい場合、例えば次のような記述が可能です。
JSTLのforEachを利用する例
 <m:bind bean="${bean}">
 
 :
 
 <c:forEach var="item" items="${bean.children}" varStatus="stat">
   ${stat.index}.
   <m:bind prop="children[${stat.index}].name">
   child name : <input type="text" value="${value}" name="${name}"> <m:errors />
   </m:bind>
 </c:forEach>
 
 </m:bind>
 
 
prop指定と同時にbeanが指定された場合は、そのbeanのプロパティをバインドします。 beanが未指定の場合は、親タグに指定されるbeanのプロパティをバインドします。
htmlEscape truevalue(プロパティ値の文字列表現)を出力する際にhtmlエスケープ処理をするか否かを指定可能です。
このフラグによってエスケープ処理されるのはvalueのみです。name、errorsの値はエスケープされません。
formatter
無効な参照です
DefaultValueFormatter
のインスタンス
value(プロパティ値の文字列表現)を出力する際のフォーマット処理を行うValueFormatterのインスタンスを指定します。
このformatterをbeanが指定される親のbindタグに指定することにより個別のプロパティがバインドされる値に一律の処理が可能ですが、 次のように個別にrawValueからフォーマットすることも可能です。 以下例では、エラーが発生した場合は、エラー値を出力するようにnvl関数を利用しています。
 <m:bind prop="dateProp">
 :
 <input type="text" value="${m:nvl(errorValue, m:fmt(rawValue, 'yyyy/MM/dd'))}" name="${name}">
 </m:bind>
 
propertyNameVariableName nameバインドされたプロパティのHTTPパラメータ名をpageContextに公開する際の変数名を指定可能です。
propertyValueVariableName valueバインドされたプロパティの値の文字列表現をpageContextに公開する際の変数名を指定可能です。
propertyRawValueVariableName rawValueバインドされたプロパティの生の値をpageContextに公開する際の変数名を指定可能です。
propertyErrorValueVariableName errorValueバインドされたプロパティがエラーの場合、そのエラー値が格納される変数名を指定可能です。
errorsVariableName errorsバインドされたプロパティに関連するエラーをpageContextに公開する際の変数名を指定可能です。
prefix  name(HTTPパラメータ名)を出力する際のprefixを指定します。 HTTPリクエストをBeanParamMapperでマッピングする場合、BeanParamMapperのparamPrefixの値と一致させる必要があります。
propertyDelimiter .name(HTTPパラメータ名)を出力する際のネストされたプロパティのデリミタを指定します。 HTTPリクエストをBeanParamMapperでマッピングする場合、BeanParamMapperのpropertyDelimiterの値と一致させる必要があります。
indexPrefix [name(HTTPパラメータ名)を出力する際のインデックス指定のプレフィックス文字を指定します。 HTTPリクエストをBeanParamMapperでマッピングする場合、BeanParamMapperのindexPrefixの値と一致させる必要があります。
indexPostfix ]name(HTTPパラメータ名)を出力する際のインデックス指定のポストフィックス文字を指定します。 HTTPリクエストをBeanParamMapperでマッピングする場合、BeanParamMapperのindexPostfixの値と一致させる必要があります。

関連項目:
  • フィールド詳細

  • コンストラクタの詳細

    • BindTag

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

    • getPropertyErrorValueVariableName

      public String getPropertyErrorValueVariableName()
    • setPropertyErrorValueVariableName

      public void setPropertyErrorValueVariableName(String propertyErrorValueVariableName)
    • getFormatter

      public ValueFormatter getFormatter()
    • setFormatter

      public void setFormatter(ValueFormatter formatter)
    • isHtmlEscape

      public boolean isHtmlEscape()
    • setHtmlEscape

      public void setHtmlEscape(boolean htmlEscape)
    • getPropertyDelimiter

      public String getPropertyDelimiter()
    • setPropertyDelimiter

      public void setPropertyDelimiter(String propertyDelimiter)
    • getIndexPrefix

      public String getIndexPrefix()
    • setIndexPrefix

      public void setIndexPrefix(String indexPrefix)
    • getIndexPostfix

      public String getIndexPostfix()
    • setIndexPostfix

      public void setIndexPostfix(String indexPostfix)
    • getBeanVariableName

      public String getBeanVariableName()
    • setBeanVariableName

      public void setBeanVariableName(String beanVariableName)
    • getMappingResultVariableName

      public String getMappingResultVariableName()
    • setMappingResultVariableName

      public void setMappingResultVariableName(String mappingResultVariableName)
    • getPropertyNameVariableName

      public String getPropertyNameVariableName()
    • setPropertyNameVariableName

      public void setPropertyNameVariableName(String propertyNameVariableName)
    • getPropertyValueVariableName

      public String getPropertyValueVariableName()
    • setPropertyValueVariableName

      public void setPropertyValueVariableName(String propertyValueVariableName)
    • getPropertyRawValueVariableName

      public String getPropertyRawValueVariableName()
    • setPropertyRawValueVariableName

      public void setPropertyRawValueVariableName(String propertyRawValueVariableName)
    • getErrorsVariableName

      public String getErrorsVariableName()
    • setErrorsVariableName

      public void setErrorsVariableName(String errorsVariableName)
    • getBean

      public Object getBean()
    • setBean

      public void setBean(Object bean)
    • getAutoDetectErrors

      public Boolean getAutoDetectErrors()
    • setAutoDetectErrors

      public void setAutoDetectErrors(Boolean autoDetectErrors)
    • getMappingResult

      public MappingResult getMappingResult()
    • setMappingResult

      public void setMappingResult(MappingResult mappingResult)
    • getProp

      public String getProp()
    • setProp

      public void setProp(String prop)
    • getPrefix

      public String getPrefix()
    • setPrefix

      public void setPrefix(String prefix)
    • isSetBean

      boolean isSetBean()
    • getBeanBindTag

      BindTag getBeanBindTag()
    • doStartTag

      public int doStartTag() throws jakarta.servlet.jsp.JspException
      定義:
      doStartTag インタフェース内 jakarta.servlet.jsp.tagext.Tag
      オーバーライド:
      doStartTag クラス内 jakarta.servlet.jsp.tagext.TagSupport
      例外:
      jakarta.servlet.jsp.JspException
    • doEndTag

      public int doEndTag() throws jakarta.servlet.jsp.JspException
      定義:
      doEndTag インタフェース内 jakarta.servlet.jsp.tagext.Tag
      オーバーライド:
      doEndTag クラス内 jakarta.servlet.jsp.tagext.TagSupport
      例外:
      jakarta.servlet.jsp.JspException
    • doCatch

      public void doCatch(Throwable t) throws Throwable
      定義:
      doCatch インタフェース内 jakarta.servlet.jsp.tagext.TryCatchFinally
      例外:
      Throwable
    • doFinally

      public void doFinally()
      定義:
      doFinally インタフェース内 jakarta.servlet.jsp.tagext.TryCatchFinally