基本機能
uji:nameタグは、カレントオブジェクトを更新するための入力項目名を生成します。
uji:nameタグのアトリビュートは指定できません。
uji:nameタグのコンテントは記述できません。
JSP
<uji:listRenderer type="element" > <li><input name="<uji:name/>" /> </uji:listRenderer>
カレントオブジェクトについては、各画面部品タグのレンダラを参照してください。
XML連携機能
uji:nameタグは、カレントオブジェクトを更新するための入力項目名を生成します。
イベントモデルではXML連携機能は利用できません。
uji:nameタグのアトリビュートは指定できません。
XML
<root> <list> <item>緑茶</item> <item>紅茶</item> </list> </root>
JSP
<form method="post"> <uji:list bean="body" xpath="list" > <uji:listRenderer type="list" > <ul><uji:children /></ul> </uji:listRenderer> <uji:listRenderer type="element" > <li><input name="<uji:name/>" value="<uji:value/>"></li> </uji:listRenderer> </uji:list> <input type="submit" name="update" value="更新"> </form>
表示画面
この画面で、1行目のテキストフィールドに"こぶ茶"と入力し更新ボタンを押すと、XMLが更新されて次のようになります。
XML
<root> <list> <item>こぶ茶</item> <item>紅茶</item> </list> </root>
イベントモデル
uji:nameタグは、カレントオブジェクトを更新するための入力項目名を生成します。
uji:nameタグは、uji:formタグの中に記述します。
uji:nameタグは、イベントモデルで使用する際に以下のアトリビュートを指定します。これ以外のアトリビュートについては、“基本機能”を参照してください。
アトリビュート名 | 省略 | 意味 | 省略時の動作 |
---|---|---|---|
validator | 可 | バリデータメソッドをメソッドバインディング式で指定します。 | バリデータメソッドを使用しません。 |
converter | 可 | コンバータをコンバータIDもしくはバリューバインディング式で指定します。 | コンバータを使用しません。 |
valueChangeListener | 可 | バリューチェンジリスナメソッドをメソッドバインディング式で指定します。 | バリューチェンジリスナメソッドを使用しません。 |
immediate | 可 | 値の変換と検証を処理するフェーズを指定します。trueの場合、Apply Request Valuesで処理されます。falseの場合、Process Validatorsで処理されます。 | false |
id | 可 | コンポーネントのIDを指定します。 | 自動的に付与されます。 |
uji:nameタグのコンテントには以下のタグが記述できます。
f:validator(0個以上)
f:converter(最大1個)
f:valueChangeListener(0個以上)
JSP
<f:view> <uji:form name="myform" method="post"> ... <uji:listRenderer type="element" > <li><input name="<uji:name validator='#{myBean.validate}' valueChangeListener='#{myBean.valueChanged}'/>" /> </uji:listRenderer> ... </uji:form> </f:view>
Java
import javax.faces.application.FacesMessage; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.event.AbortProcessingException; import javax.faces.event.ValueChangeEvent; import javax.faces.validator.ValidatorException; public class MyBean { /** * 入力値の検証を行います。 * @param context 処理中のリクエストに関するFacesContext * @param component 正確さをチェック中のUIComponent * @param value 検証する値 * @throws ValidatorException 検証が失敗した場合 */ public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException { if(value == null || value.toString().length() == 0) { throw new ValidatorException(new FacesMessage("入力値がありません。")); } } /** * 値の変更が起きた場合に呼び出されます。 * @param event 値が変更されたことの通知 * @throws AbortProcessingException JavaServer Facesインプリメンテーションに、 現在のイベントに追加の処理を行わないよう通知します。 */ public void valueChanged(ValueChangeEvent event) throws AbortProcessingException { Object oldVal = event.getOldValue(); // 変更前の値 Object newVal = event.getNewValue(); // 現在の値 // 値が変化した場合の処理を記述 } }
uji:nameタグでバリデータを利用する場合、バリデータに渡されるオブジェクトの型はjava.lang.Stringです。
uji:nameタグでコンバータを利用する場合、getAsObjectメソッドの復帰値とBeanのプロパティの型が一致している必要があります。
リクエストをモデルに設定する場合(javax.faces.convert.ConverterインタフェースのgetAsObject)のみ有効です。