[Seasar-user:18757] Re: [Ymir] Validate後に、該当textboxのスタイルを変更したい
YOKOTA Takehiko
[E-MAIL ADDRESS DELETED]
2009年 10月 23日 (金) 16:37:31 JST
横田です。
> YmirでValidateを行った後、該当のテキストボックスのスタイルを
> 変更したいと思っております。(該当箇所が分かるように背景が赤
> くなるなど)
>
> Teedaでいえば、ここの機能となります。
> http://teeda.seasar.org/ja/extension/reverse/validation.html#%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%A8%E3%81%AA%E3%81%A3%E3%81%9F%E9%A0%85%E7%9B%AE%E3%81%8C%E7%9B%AE%E7%AB%8B%E3%81%A4%E3%82%88%E3%81%86%E3%81%AB%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF
バリデーションエラーとなったテキストボックスのスタイルを変更するのでしたら、
<input>タグに
tal:attributes="class string:error-${notes/contains(XXX)}"
(XXXはリクエストパラメータ名)
という属性をつけることで、バリデーションエラー発生時に「error-true」、
発生していない時に「error-false」というclass名がつくようになります。
仕組みですが、バリデーションエラーが発生した場合、バリデーションエラー
情報を持つNotesオブジェクトがリクエストスコープに「notes」という名前で
バインドされます。
ZPTで「notes/contains(XXX)」とすると、リクエストスコープの「notes」
という名前のオブジェクトのcontainsメソッドが(引数にXXXが渡されて)
呼び出されます。Notesオブジェクトが存在する場合は、contains(XXX)の
結果は「XXXというパラメータについてエラーが発生していればtrue、
していなければfalse」となりますので、XXXについてエラーが発生していれ
ば${...}の部分が"true"になり、エラーが発生していなければ"false"にな
る、というわけです。
なお、バリデーションエラーが1つも発生しなかった場合はnotesという名前
でリクエストスコープからオブジェクトは取れませんが、その場合「notes/contains(XXX)」
という式の評価結果は"false"となります。
このあたりのサンプルがymir-example-genericにありますのでみてみてくだ
さい。
ソース:https://www.seasar.org/svn/ymir/example/trunk/ymir-example-generic/
最新のwar:http://maven.seasar.org/maven2-snapshot/org/seasar/ymir/example/ymir-example-generic/1.0.7-SNAPSHOT/ymir-example-generic-1.0.7-20091023.073027-1.war
「テキストボックス」というサンプルが参考になると思います。
http://localhost:8080/ymir-example-generic/text/index.html
以上よろしくお願いします。
西山 はじめ さんは書きました:
> お世話になっております。
> 西山(hajimeni)です。
>
> 現在、以下の環境でYmirアプリケーションの開発を行っております。
>
> Ymir:1.0.5
> DBFlute:0.9.5.5
> S2Container:2.4.20
>
> OracleApplicationServer10g(10.1.3.4)
> OracleDatabase10g
>
> YmirでValidateを行った後、該当のテキストボックスのスタイルを
> 変更したいと思っております。(該当箇所が分かるように背景が赤
> くなるなど)
>
>
> Teedaでいえば、ここの機能となります。
> http://teeda.seasar.org/ja/extension/reverse/validation.html#%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%A8%E3%81%AA%E3%81%A3%E3%81%9F%E9%A0%85%E7%9B%AE%E3%81%8C%E7%9B%AE%E7%AB%8B%E3%81%A4%E3%82%88%E3%81%86%E3%81%AB%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF
>
> Ymirを使用する上で、こういった機能を実装する為のValidationの
> 結果の情報は取得できるでしょうか。
>
> _prerender時に、Validate結果がわかれば何とかなりそうではある
> のですが・・・
>
> 何かいい方法がありましたら、教えていただきたいと思います。
>
>
> 以上よろしくお願いいたします。
>
--
YOKOTA Takehiko
[E-MAIL ADDRESS DELETED]
Seasar-user メーリングリストの案内