2012-03-20 24 views
1

属性:JSPタグは、私は、このようなJSPスニペットを書くためのクリーンな方法を探しています

<a href="${model.link}" class="button"<c:if test="${not empty model.title"> title="${model.title}"</c:if>> 

このコードは読みにくいです。問題は、空のtitle=""というタグ属性が生成されるべきではないので、この部分をiffedする必要があるということです。

それはしかし、デフォルト値の属性だと私は<c:out>タグを見つけた:

<c:out value='title="${model.title}"' default=""/> 

が正常に動作しません、(それが安全な文字列の連結であるため)原因値は、これまでnullになりません。

このような簡単なものを書く方法はありますか?

<my:link class = "button" model = "${model}">...</my:link> 

サーブレット仕様の気にいらないが、むしろあなたがJSP-スニペットなどのtaglibを実装する可能性があるためか:あなたはこのようなもので終わると思いますので、

答えて

1
<c:if test = "${not empty model.title}"> 
<c:set var = "title" value = "title = '${model.title}'"/> 
</c:if> 
<a href="${model.link}" class="button" ${title}> 

また、カスタムタグライブラリを行うことができますあなたはJavaを使用してすべての道を行くことができます。

+0

あなたの努力のためにUpvoteしかし、これは決してクリーンではありません。 –

+0

それによると、私は個人的に slipset

1

もう1つのアプローチはそうです。

<a href="${model.link}" class="button"<% if (model.title != null) { %> title="${model.title}"<% } %>> 

最初の例よりも少し短くても、やや乱雑です。

しかし、あなたのタイトルはまだhtmlタグでカプセル化されているので、まだ墨塗りする必要があります。

StringEscapeUtils.escapeHtml(mode.title) 
+0

あなたの努力のためにUpvoteしかし、これは決してクリーンではありません。エスケープのヒントをありがとうが、私は内部クラスの実装で実際にそれをやっている。 –

関連する問題