FacesMessageでのSeverityに応じたスタイル指定
JSFでは、何でエラーメッセージと通知用のメッセージを分けられないのだろう、って思っていたんですが、FacesMessageクラスにはseverityプロパティがあって、メッセージのレベルを指定できたんですね。
知りませんでした(汗)
JSFの h:messages タグでは、各レベルに合わせた class や style 属性が指定できるようです。
なるほど。
http://java.sun.com/javaee/javaserverfaces/1.2/docs/tlddocs/h/messages.html
現在のTeedaの仕様では、
id | 出力内容 |
---|---|
allMessages | 全てのメッセージ |
messages | 項目にヒモ付かないメッセージ |
id+Message | 指定されたidにヒモ付くメッセージ |
ということになっていますが、レベルに応じてスタイルを変更するにはどうするのでしょうか?
・・・と、調べてみたら、現在のバージョン(Ver1.0.6)でも、実現する方法があるようですね。
- HTMLの定義
<span id="allMessages" errorClass="errorMessage"></span>
- 実際の出力
<ul id="allMessages"> <li><span class="errorMessage">値を入力してください</span></li> </ul>
上の例は、バリデーションエラー時の指定ですが、他のレベルの場合も同様に指定できます。
<span id="allMessages" fatalClass="fatalMessage" errorClass="errorMessage" warnClass="warnMessage" infoClass="infoMessage"> </span>
うーん、知らなかった。Teeda Core のみならず、Teeda Extenstion でも指定できるのって、仕様!?
でも、これなら、メッセージ表示のプロパティをアプリケーション独自に作りこまなくても済みますね。
属性が、Pure HTML ではないですが、まあ、特に問題でもないでしょう。
Page(もしくはAction)側では、以下のようにメッセージを指定すれば良いですね。
FacesMessageUtil.addFatalMessage(messageId); FacesMessageUtil.addErrorMessage(messageId); FacesMessageUtil.addWarnMessage(messageId); FacesMessageUtil.addInfoMessage(messageId);
※2007/03/22 追記
Teeda Extension的には、次のように指定するのが正しいとのこと。
-
- 「te:」付けました。名前空間の指定を忘れないように。
<html xmlns:te="http://www.seasar.org/teeda/extension"> <span id="allMessages" te:fatalClass="fatalMessage" te:errorClass="errorMessage" te:warnClass="warnMessage" te:infoClass="infoMessage"> </span>