Package org.iplass.mtp.web.template.tags
Class BindTag
java.lang.Object
jakarta.servlet.jsp.tagext.TagSupport
org.iplass.mtp.web.template.tags.BindTag
- All Implemented Interfaces:
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に公開される際の変数名は、デフォルトでは以下の名前で公開されます。
また、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 | true | value(プロパティ値の文字列表現)を出力する際にhtmlエスケープ処理をするか否かを指定可能です。 このフラグによってエスケープ処理されるのはvalueのみです。name、errorsの値はエスケープされません。 |
|
| formatter | ○ |
invalid reference
|
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の値と一致させる必要があります。 |
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final StringFields inherited from class jakarta.servlet.jsp.tagext.TagSupport
id, pageContextFields inherited from interface jakarta.servlet.jsp.tagext.IterationTag
EVAL_BODY_AGAINFields inherited from interface jakarta.servlet.jsp.tagext.Tag
EVAL_BODY_INCLUDE, EVAL_PAGE, SKIP_BODY, SKIP_PAGE -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidintdoEndTag()voidintgetBean()(package private) BindTaggetProp()boolean(package private) booleanvoidsetAutoDetectErrors(Boolean autoDetectErrors) voidvoidsetBeanVariableName(String beanVariableName) voidsetErrorsVariableName(String errorsVariableName) voidsetFormatter(ValueFormatter formatter) voidsetHtmlEscape(boolean htmlEscape) voidsetIndexPostfix(String indexPostfix) voidsetIndexPrefix(String indexPrefix) voidsetMappingResult(MappingResult mappingResult) voidsetMappingResultVariableName(String mappingResultVariableName) voidvoidvoidsetPropertyDelimiter(String propertyDelimiter) voidsetPropertyErrorValueVariableName(String propertyErrorValueVariableName) voidsetPropertyNameVariableName(String propertyNameVariableName) voidsetPropertyRawValueVariableName(String propertyRawValueVariableName) voidsetPropertyValueVariableName(String propertyValueVariableName) Methods inherited from class jakarta.servlet.jsp.tagext.TagSupport
doAfterBody, findAncestorWithClass, getId, getParent, getValue, getValues, release, removeValue, setId, setPageContext, setParent, setValue
-
Field Details
-
DEFAULT_PROPERTY_DELIMITER
- See Also:
-
DEFAULT_INDEX_PREFIX
- See Also:
-
DEFAULT_INDEX_POSTFIX
- See Also:
-
DEFAULT_BEAN_VARIABLE_NAME
- See Also:
-
DEFAULT_MAPPING_RESULT_VARIABLE_NAME
- See Also:
-
DEFAULT_PROPERTY_NAME_VARIABLE_NAME
- See Also:
-
DEFAULT_PROPERTY_VALUE_VARIABLE_NAME
- See Also:
-
DEFAULT_PROPERTY_RAW_VALUE_VARIABLE_NAME
- See Also:
-
DEFAULT_PROPERTY_ERROR_VALUE_VARIABLE_NAME
- See Also:
-
DEFAULT_ERROR_VARIABLE_NAME
- See Also:
-
-
Constructor Details
-
BindTag
public BindTag()
-
-
Method Details
-
getPropertyErrorValueVariableName
-
setPropertyErrorValueVariableName
-
getFormatter
-
setFormatter
-
isHtmlEscape
public boolean isHtmlEscape() -
setHtmlEscape
public void setHtmlEscape(boolean htmlEscape) -
getPropertyDelimiter
-
setPropertyDelimiter
-
getIndexPrefix
-
setIndexPrefix
-
getIndexPostfix
-
setIndexPostfix
-
getBeanVariableName
-
setBeanVariableName
-
getMappingResultVariableName
-
setMappingResultVariableName
-
getPropertyNameVariableName
-
setPropertyNameVariableName
-
getPropertyValueVariableName
-
setPropertyValueVariableName
-
getPropertyRawValueVariableName
-
setPropertyRawValueVariableName
-
getErrorsVariableName
-
setErrorsVariableName
-
getBean
-
setBean
-
getAutoDetectErrors
-
setAutoDetectErrors
-
getMappingResult
-
setMappingResult
-
getProp
-
setProp
-
getPrefix
-
setPrefix
-
isSetBean
boolean isSetBean() -
getBeanBindTag
BindTag getBeanBindTag() -
doStartTag
public int doStartTag() throws jakarta.servlet.jsp.JspException- Specified by:
doStartTagin interfacejakarta.servlet.jsp.tagext.Tag- Overrides:
doStartTagin classjakarta.servlet.jsp.tagext.TagSupport- Throws:
jakarta.servlet.jsp.JspException
-
doEndTag
public int doEndTag() throws jakarta.servlet.jsp.JspException- Specified by:
doEndTagin interfacejakarta.servlet.jsp.tagext.Tag- Overrides:
doEndTagin classjakarta.servlet.jsp.tagext.TagSupport- Throws:
jakarta.servlet.jsp.JspException
-
doCatch
- Specified by:
doCatchin interfacejakarta.servlet.jsp.tagext.TryCatchFinally- Throws:
Throwable
-
doFinally
public void doFinally()- Specified by:
doFinallyin interfacejakarta.servlet.jsp.tagext.TryCatchFinally
-