を使用してそれを達成することはできません<h:inputText>
。その名前は、クライアント ID に基づいて JSF によって自動生成されます (これは、コンポーネント ID とそのすべての名前付けコンテナーの親に基づいています)。
とにかく具体的な機能要件を達成するには、基本的に2つのオプションがあります。
ネーミング コンテナーの親が他にない場合は、親フォームにその ID を付加しないように指示します。
<h:form prependId="false">
<f:ajax>
ただし、これは失敗の原因になります。
JSF コンポーネントの代わりにプレーンな HTML 要素を使用します。
<input name="name" value="#{bean.name}" />
<input name="email" value="#{bean.email}" />
@ManagedProperty
リクエスト スコープの Beanを介して自分で収集するだけです。
@ManagedProperty("#{param.name}")
private String name;
@ManagedProperty("#{param.email}")
private String email;
また、JSF 組み込みの検証/変換機能と ajax マジックを見逃してしまいます。
ただし、まったく異なる代替手段があります: HTML5 を使用します<input type="email">
。このようにして、ブラウザーは、まったく同じタイプの入力で以前に入力されたすべての電子メールを自動提案します。これは、ネイティブではサポートされていません<h:inputText>
。ただし、 Adding custom attribute (HTML5) support to Primefaces (3.4)で回答されているように、カスタム レンダー キットを使用して機能させることができます。
<h:inputText type="email" ... />
JSF 2.2 の更新により、最終的にカスタム レンダー キットを必要とせずにパススルー属性を簡単に宣言できるようになりました。
<... xmlns:a="http://xmlns.jcp.org/jsf/passthrough">
...
<h:inputText a:type="email" ... />