[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 メーリングリストの案内