2014年01月30日

サーバー側のvalidateエラーがあるかJSPで判定。

(SA)Strutsでの開発の場合、サーバー側のvalidateで引っかかった場合は、JPSにて<html:errors/>で表示する。

それはいいのだけど、そもそもエラーがあんのか?ある場合だけJSPで特定の処理を入れたいってことがあった。

まずは、<html:errors/>のタグでisEmptyや、hasErrorっぽいオプションがないか調べてみたがなし。

仕方ないのでスクリプトレットでrequestから取り出してゴニョゴニョするしかないと思ったがはソース汚れるしやりたくない。

更に仕方ないのでそういうタグリブを自作かな?って思ったのだけど、そういうの既にありそうだし作りたくない。

何かないなかーって思ってたら、JSTLにRequestタグライブラリなるものが有り、その中にexistsAttributeってのがある。

まさにそれっぽい。早速やってみる。

すでに設定済のTaglibsStandardには、どうやら含まれてないみたいなので別途取得。

今回は、Mavenでやる。

<dependency>
  <groupId>taglibs</groupId>
  <artifactId>request</artifactId>
  <version>1.0.1</version>
</dependency>

次にJSPファイルのtaglibディレクティブで属性uriを記述する。
(web.xmlでURIマッピングを行う方法もあるけどお好みで。)

<%@taglib prefix="req" uri="http://jakarta.apache.org/taglibs/request-1.0" %>

そしてJSPにて、

<req:existsAttribute name="org.apache.struts.action.ERROR">
エラーがあるときだけやりたい処理書く。
</req:existsAttribute>

とするとうまくいった!こんなライブラリあったとは今まで知らなかった。これから活用しよう。

ちなみに、Session版、Response版もあるみたい。機会があれば使ってみよう。
posted by hana at 17:35| Comment(0) | TrackBack(0) | Struts関連 | このブログの読者になる | 更新情報をチェックする