ユーザーがフィールドからフォーカスを移動したときに、JSF inputText フィールドを大文字にしたいと考えています。f:ajax
タグを使用してこれを行い、blur
イベントによってサーバーへの呼び出しをトリガーして大文字化を行うのが最善でしょうか、それとも JavaScript でこれを行うのが最善でしょうか? JavaScript でこれを行わない理由は何でしょうか? サーバー側へのajax呼び出しを使用して、常にこの種のことを行うのが最善ですか?
28199 次
3 に答える
30
これを救うには確かに2つの方法があります。
JavaScriptを使用します。
<h:inputText ... onblur="value=value.toUpperCase()" />
JSFを使用します。
<h:inputText ... converter="toUpperCaseConverter"> <f:ajax event="blur" render="@this" /> </h:inputText>
@FacesConverter("toUpperCaseConverter") public class ToUpperCaseConverter implements Converter { @Override public Object getAsObject(FacesContext context, UIComponent component, String submittedValue) { return (submittedValue != null) ? submittedValue.toUpperCase() : null; } @Override public String getAsString(FacesContext context, UIComponent component, Object modelValue) { return (modelValue != null) ? modelValue.toString() : ""; } }
JSのアプローチは非常に単純です。ただし、これは、エンドユーザーの完全な制御下でクライアント側で完全に実行されるため、エンドユーザーによって改ざんされる可能性があります。エンドユーザーは、実際にサーバー側に送信される前に、そのJSコードを無効化/スキップしたり、リクエストパラメーターを編集したりできます。JSFアプローチはサーバー側で完全に実行されるため、改ざん可能ではありません。そのため、より確実で信頼性の高い結果が得られます。
これらの事実に基づいて、ビジネス要件に最適なものを決定する必要があります。
于 2012-06-13T22:29:51.877 に答える
3
これを使用してください:style="text-transform: uppercase"、それは私の仕事です。そして、あなたが使用する任意のフラットフォームで動作します:)単純なことに複雑な方法を使用する必要はないと思います。
于 2013-03-15T07:22:43.570 に答える