0

如果值绑定到 html5 输入类型 = 电子邮件,我在考虑在 JSF2 应用程序的 ajax 往返中更新我的支持 bean 时遇到问题。

  1. 首先,我创建了一个“Html5InputRenderer”,以便 JSF-runtime 可以为 a 创建 html5-markup,以便编写

  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