S2JSFでバリデーションエラーがあったかどうかを判定したい(その2

higaさま、yone098さまにアドバイスを頂きつつ再検討してみました。

まずはフォーム画面にHiddenを置く。
hogeEditInitActionにvalidというクラス変数は置かず、よって初期値は空文字となる。

■hogeEdit.html
<html lang="ja" xmlns:m="http://www.seasar.org/maya"
m:action="#{hogeEditInitAction.initialize}">
..(略)
<input type="hidden" id="valid" m:value="#{valid}" />

<input id="title" type="text" m:value="#{hogeDto.title}" m:required="true" />
<span m:inject="h:message" m:for="title" m:class="error"/>
<input id="btnCheck" type="button" m:action="#{hogeEditAction.goCheck}" value="内容確認へ" />

S2JSFの動きだと、バリデーションエラーがある場合はhogeEditAction#goCheck()まで処理が到達しないので、
hiddenに入っているvalid値は、空文字のままとなる。

バリデーションエラーが無い場合は、hogeEditAction#goCheck()まで処理が到達するので、
以下のようにコードを書く。

■hogeEditAction.java
private String valid = ""; // 入力検証完了通知用

public String goCheck() {
valid = "OK"; //検証が完了した
return null; //もう一度入力フォームへ戻す
}

hogeEditAction#goCheck()
のあとは、
hiddenに入っているvalid値が"OK"となるため、バリデーションを通過したことがJavaScriptから判定できるようになる。

こんな感じでいかがでしょうか?

hogeEditInitAction#initializeの中で、
javax.faces.context.FacesContext@getCurrentInstance().getMessages().hasNext()
を使って判定しようとしていたのですが、一度hiddenに入ってしまった値は書き換えることができなかったので、
上記のような方法にしてみました。やり方がまずかったのでしょうか...

S2JSFとS2Daoの組み合わせ問題?

S2JSFというかS2Daoとの組み合わせに問題が出てしまいました。

s2-jsf-example-1.0.14 をベースに開発を進めていて、
PostgreSQLとhsqlを切り替えて使っているのですが、下記の件に引っかかってしまいました。

[Seasar-user:2733] [S2Dao] HSQLDB 1.8.0 で SEQUENCE が使えない
http://ml.seasar.org/archives/seasar-user/2005-October/000621.html

s2-dao-1.0.35のソースを見た感じでは直っているようなので、
使っているS2Daoをバージョンアップしました。
s2-dao-1.0.31.jar ⇒ s2-dao-1.0.35.jar

ところが、Tomcat5.0.28の起動で、警告がでてしまいアプリが動かなくなってしまいました..

WARN 2006-06-30 17:10:59,437 [main] org.seasar.dao.impl.DaoMetaDataFactoryImplのプロパティ(valueTypeFactory)が見つからないので設定をスキップします

うう。。こんな時はどうすれば...orz