0

値がhtml5inputtype = emailにバインドされている場合、JSF2アプリケーションのajax-roundtrip内でバッキングBeanを更新することを検討する際に問題が発生しました。

  1. まず、「Html5InputRenderer」を作成しました。これにより、JSFランタイムは、次のように、のhtml5-マークアップを作成できます。

  2. 「Html5InputRendererが行う中心的な「魔法」は次のとおりです。

    markup.replaceAll("type=\"text\"", "type=\"email\"");
    

    javax.faces.renderer.RendererのオーバーライドされたメソッドencodeEnd(..)内。

  3. この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>
    
  4. アトリビュート「renderedType」は、JSFのヒントです-「Html5InputRenderer」は、h:inputのhtml5マークアップをレンダリングします

  5. スニペットをテストします。JSFランタイムによってajaxラウンドトリップが呼び出されても、#{testBean.value}は更新されません。

  6. 属性「renderedType」を削除してスニペットをテストします。すべてが期待どおりに機能します。

4

0 に答える 0