SAStrutsのf:h()をSpringタグ・JSTLタグで置き換えたい

IT, Java

seasar2 → Springにコンバートする際に
SAStrutsタグ・ファンクションをSpringタグorJSTLタグに置き換える必要がありました。
f:h()を置き換える際にちょっと苦戦したので備忘録として書いておきます。

f:h()とは?

使い方はここを参照してください。
クロスサイトスクリプティング対策でエスケープする必要がある場合に使用します。

 

JSTLタグで置き換え

下記のように基本的にはc:outで置き換えてやればよいと思います。

c:outの使い方はここを参照してください。

 

特殊なケース

特殊なケースの例を提示します。

こんな風にcタグのtest属性の判定条件にf:h()が使用されている場合、
先ほどの置き換えでは問題が発生します。
c:whenタグやc:ifタグのtest属性内にc:outタグを使用するとエラーが発生してしまうのです。

正直サニタイジングする意味がないであろう部分ではありますが、
お客様の強い要望でf:hと同等の処理を付与しなければいけません。
ではどうするか?

 

特殊なケースの解決策

JSTLタグのfn:escapeXmlタグを使用します。

こんな感じでOKです。

 

まとめ

seasar2 → Springにコンバートする案件ってどのくらいあるのでしょう。
あんまりなさそうな気がします。
そう考えると需要がうっすい記事かもしれませんね。
誰かの参考になれば幸いです。

IT, Java

Posted by raishin