1

私はJSFについて少し混乱submittedValueしています。valueコンバーター/検証エラーが発生した場合、どの値がレンダリングされますか?

Jsf ライフ サイクル - 検証の失敗後に応答をレンダリングする

上記の質問のBalusCの回答から、答えを見つけることができました。ただし、送信された値がnullの場合にモデル値がレンダリングされるこのレンダリングロジックがどのクラスに存在するかを知りたいです。どのクラスですか?

4

1 に答える 1

1

送信された値が null の場合にモデル値がレンダリングされるこのレンダリング ロジックが存在するクラスを知りたい

使用されている JSF 実装についてはどこにも触れていません。この回答では、それが Mojarra であると仮定します。その場合は、 で行われHtmlBasicRenderer#getCurrentValue()ます。これは、Mojarra 1.2_15 からの関連性の抜粋です。

275    protected String getCurrentValue(FacesContext context,
276                                     UIComponent component) {
277
278        if (component instanceof UIInput) {
279            Object submittedValue = ((UIInput) component).getSubmittedValue();
280            if (submittedValue != null) {
281                // may not be a String...
282                return submittedValue.toString();
283            }
284        }
285
286        String currentValue = null;
287        Object currentObj = getValue(component);
288        if (currentObj != null) {
289            currentValue = getFormattedValue(context, component, currentObj);
290        }
291        return currentValue;
292
293    }

コードはそれ自体を物語っています。コンポーネントが のインスタンスである場合、UIInput送信された値を取得します。そうでない場合はnull、返品してください。それ以外の場合は、通常の方法でモデル値を返します。

MyFaces も同様のアプローチを使用しています。

于 2013-07-16T11:13:48.577 に答える