public class UrlTag extends HtmlEscapingAwareTag implements ParamAware
<url>
タグは URL を作成します。下位互換性を考慮して、JSTL c:url
タグをモデルにしています。JSTL 機能の強化には以下が含まれます。
テンプレート URI 変数は 'value'
属性で示され、中括弧 '{variableName}' でマークされます。中括弧と属性名は、url タグの本文の spring:param タグで定義されたパラメーターの URL エンコードされた値に置き換えられます。使用可能なパラメーターがない場合、リテラル値が渡されます。テンプレート変数に一致するパラメーターはクエリ文字列に追加されません。
値は URL エンコードされるため、URI テンプレート変数に spring:param タグを使用することは、直接 EL 置換よりも強く推奨されます。URL を適切にエンコードしないと、アプリケーションが XSS およびその他のインジェクション攻撃に対して脆弱になる可能性があります。
'htmlEscape'
属性を "true" に設定することにより、URL を HTML/XML エスケープできます。このタグインスタンス、ページレベル、web.xml
レベルで、HTML エスケープ設定を検出します。デフォルトは "false" です。URL 値を変数に設定する場合、エスケープは推奨されません。
使用例:
<spring:url value="/url/path/{variableName}"> <spring:param name="variableName" value="more than JSTL c:url" /> </spring:url>
上記の結果: /currentApplicationContext/url/path/more%20than%20JSTL%20c%3Aurl
属性 | 必須 ? | ランタイム式? | 説明 |
---|---|---|---|
value | true | true | ビルドする URL。この値には、名前付きパラメーターの URL エンコード値で置き換えられるテンプレート {placeholders} を含めることができます。パラメーターは、このタグの本文内の param タグを使用して定義する必要があります。 |
コンテキスト | false | true | リモートアプリケーションコンテキストパスを指定します。デフォルトは、現在のアプリケーションコンテキストパスです。 |
var | false | true | URL 値のエクスポート先の変数の名前。指定しない場合、URL は出力として書き込まれます。 |
範囲 | false | true | 変数のスコープ。「アプリケーション」、「セッション」、「リクエスト」、「ページ」の各スコープがサポートされています。デフォルトはページスコープです。var 属性も定義されていない限り、この属性は効果がありません。 |
htmlEscape | false | true | このタグの HTML エスケープをブール値として設定します。現在のページのデフォルトの HTML エスケープ設定をオーバーライドします。 |
javaScriptEscape | false | true | このタグの JavaScript エスケープをブール値として設定します。デフォルトは false です。 |
logger, REQUEST_CONTEXT_PAGE_ATTRIBUTE
idEE, pageContextEE
EVAL_BODY_AGAINEE
EVAL_BODY_INCLUDEEE, EVAL_PAGEEE, SKIP_BODYEE, SKIP_PAGEEE
コンストラクターと説明 |
---|
UrlTag() |
修飾子と型 | メソッドと説明 |
---|---|
void | addParam(Param param) 親タグに値を渡すための、ネストされた spring:param タグのコールバックフック。 |
protected StringSE | createQueryString(ListSE<Param> params, SetSE<StringSE> usedParams, boolean includeQueryStringDelimiter) テンプレートパラメーターとしてまだ適用されていない使用可能なパラメーターからクエリ文字列を作成します。 |
int | doEndTag() |
int | doStartTagInternal() 実際の作業を実行するために doStartTag によって呼び出されます。 |
protected StringSE | replaceUriTemplateParams(StringSE uri, ListSE<Param> params, SetSE<StringSE> usedParams) 利用可能なパラメーターに一致する URL のテンプレートマーカーを置き換えます。 |
void | setContext(StringSE context) URL のコンテキストパスを設定します。 |
void | setJavaScriptEscape(boolean javaScriptEscape) このタグの JavaScript エスケープをブール値として設定します。 |
void | setScope(StringSE scope) URL 変数をエクスポートするスコープを設定します。 |
void | setValue(StringSE value) URL の値を設定します。 |
void | setVar(StringSE var) 変数名を設定して、URL を公開します。 |
htmlEscape, isDefaultHtmlEscape, isHtmlEscape, isResponseEncodedHtmlEscape, setHtmlEscape
doCatch, doFinally, doStartTag, getRequestContext
doAfterBodyEE, findAncestorWithClassEE, getIdEE, getParentEE, getValueEE, getValuesEE, releaseEE, removeValueEE, setIdEE, setPageContextEE, setParentEE, setValueEE
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
public void setValue(StringSE value)
public void setContext(StringSE context)
public void setVar(StringSE var)
public void setScope(StringSE scope)
public void setJavaScriptEscape(boolean javaScriptEscape) throws JspExceptionEE
public void addParam(Param param)
ParamAware
ParamAware
の addParam
param
- ネストされた spring:param
タグの結果 public int doStartTagInternal() throws JspExceptionEE
RequestContextAwareTag
RequestContextAwareTag
の doStartTagInternal
JspExceptionEE
TagSupport.doStartTag()
EEpublic int doEndTag() throws JspExceptionEE
TagEE
の doEndTagEE
TagSupportEE
の doEndTagEE
JspExceptionEE
protected StringSE createQueryString(ListSE<Param> params, SetSE<StringSE> usedParams, boolean includeQueryStringDelimiter) throws JspExceptionEE
パラメーターの名前と値は URL エンコードされます。
params
- クエリ文字列を構築するパラメーター usedParams
- テンプレートパラメーターとして適用されたパラメーター名のセット includeQueryStringDelimiter
- クエリ文字列が "?" で始まる場合は true の代わりに '&'JspExceptionEE
protected StringSE replaceUriTemplateParams(StringSE uri, ListSE<Param> params, SetSE<StringSE> usedParams) throws JspExceptionEE
パラメーター値は URL エンコードされます。
uri
- 置換するテンプレートパラメーターを含む URLparams
- テンプレートマーカーを置き換えるために使用されるパラメーター usedParams
- 置き換えられたテンプレートパラメーター名のセット JspExceptionEE