値がhtml5inputtype = emailにバインドされている場合、JSF2アプリケーションのajax-roundtrip内でバッキングBeanを更新することを検討する際に問題が発生しました。
まず、「Html5InputRenderer」を作成しました。これにより、JSFランタイムは、次のように、のhtml5-マークアップを作成できます。
「Html5InputRendererが行う中心的な「魔法」は次のとおりです。
markup.replaceAll("type=\"text\"", "type=\"email\"");
javax.faces.renderer.RendererのオーバーライドされたメソッドencodeEnd(..)内。
このh:inputはフォームに入力され、f:ajaxで強化されます。
<h:form id="form"> <f:ajax render="testOut"> <h:inputText id="test" renderedType="email" value="#{testBean.value}" /> </f:ajax> <h:outputText id="testOut" value="#{testBean.value}" /> </h:form>
アトリビュート「renderedType」は、JSFのヒントです-「Html5InputRenderer」は、h:inputのhtml5マークアップをレンダリングします
スニペットをテストします。JSFランタイムによってajaxラウンドトリップが呼び出されても、#{testBean.value}は更新されません。
属性「renderedType」を削除してスニペットをテストします。すべてが期待どおりに機能します。