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 String
static final String
static final String
static final String
static final String
static final String
static final String
static final String
static final String
static final String
Fields inherited from class jakarta.servlet.jsp.tagext.TagSupport
id, pageContext
Fields inherited from interface jakarta.servlet.jsp.tagext.IterationTag
EVAL_BODY_AGAIN
Fields inherited from interface jakarta.servlet.jsp.tagext.Tag
EVAL_BODY_INCLUDE, EVAL_PAGE, SKIP_BODY, SKIP_PAGE
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
int
doEndTag()
void
int
getBean()
(package private) BindTag
getProp()
boolean
(package private) boolean
void
setAutoDetectErrors
(Boolean autoDetectErrors) void
void
setBeanVariableName
(String beanVariableName) void
setErrorsVariableName
(String errorsVariableName) void
setFormatter
(ValueFormatter formatter) void
setHtmlEscape
(boolean htmlEscape) void
setIndexPostfix
(String indexPostfix) void
setIndexPrefix
(String indexPrefix) void
setMappingResult
(MappingResult mappingResult) void
setMappingResultVariableName
(String mappingResultVariableName) void
void
void
setPropertyDelimiter
(String propertyDelimiter) void
setPropertyErrorValueVariableName
(String propertyErrorValueVariableName) void
setPropertyNameVariableName
(String propertyNameVariableName) void
setPropertyRawValueVariableName
(String propertyRawValueVariableName) void
setPropertyValueVariableName
(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:
doStartTag
in interfacejakarta.servlet.jsp.tagext.Tag
- Overrides:
doStartTag
in classjakarta.servlet.jsp.tagext.TagSupport
- Throws:
jakarta.servlet.jsp.JspException
-
doEndTag
public int doEndTag() throws jakarta.servlet.jsp.JspException- Specified by:
doEndTag
in interfacejakarta.servlet.jsp.tagext.Tag
- Overrides:
doEndTag
in classjakarta.servlet.jsp.tagext.TagSupport
- Throws:
jakarta.servlet.jsp.JspException
-
doCatch
- Specified by:
doCatch
in interfacejakarta.servlet.jsp.tagext.TryCatchFinally
- Throws:
Throwable
-
doFinally
public void doFinally()- Specified by:
doFinally
in interfacejakarta.servlet.jsp.tagext.TryCatchFinally
-