まず、複数のフォームに分かれている項目に対してバリデーションを適用する際には、独自のバリデータを作成する必要があるのですが、その方法は前回の記事である、
Teedaでの複合項目のバリデーションをする
を確認してください。
独自バリデータを作成方法がわかったところで、本題の色変更の方法についてですが、バリデーションエラーとなったときに項目の色を変更したい場合には、リクエストマップの
org.seasar.teeda.extension.ExtensionConstants.TEEDA_EXTENSION_MESSAGE_CLIENTIDS
に色をしたい項目の項目名を指定することで実現できます。
下記にコード例を記します。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* コンポーネントのClientIdをrequestMapに設定し、 | |
* 画面表示時に項目の色が変更されるようにする | |
* | |
* @param context FacesContext | |
* @param component 項目のUIComponent | |
*/ | |
@SuppressWarnings({ "unchecked", "rawtypes" }) | |
private void clientIdToMessageClientIds(FacesContext context, | |
UIComponent component) { | |
Map requestMap = context.getExternalContext().getRequestMap(); | |
Set clientIds; | |
String key = ExtensionConstants.TEEDA_EXTENSION_MESSAGE_CLIENTIDS; | |
if (requestMap.containsKey(key)) { | |
clientIds = (Set) requestMap.get(key); | |
} else { | |
clientIds = new HashSet<string>(); | |
} | |
clientIds.add(component.getClientId(context)); | |
requestMap.put(key, clientIds); | |
} |
0 件のコメント:
コメントを投稿