如何在JSF中的表单级别执行autocomplete =“off”

时间:2010-07-09 09:39:51

标签: jsf

如何在JSF中的表单级别执行autocomplete =“off”?

3 个答案:

答案 0 :(得分:9)

这样做的最好和最简单的方法是:

<h:form id="myForm">
    <f:passThroughAttribute name="autocomplete" value="off"/>
    ...
</h:form>

如果您还没有xmlns:f="http://xmlns.jcp.org/jsf/core" attribite,请不要忘记添加head

<强>为什么吗

  1. 因为如果您的页面某处有一个需要更新/呈现表单的ajax事件,那么它将不会丢失autocomplete属性。
  2. 因为它看起来很性感(JS方式看起来很难看)。
  3. 提示:您可以对每个JSF元素使用f:passThroughAttribute,这些元素没有任何新规范的特定属性。

答案 1 :(得分:8)

使用Javascript的真正快速解决方案是(假设你已经加载了jQuery):

<script>
    $(function(){
        $("#form").attr("autocomplete", "off");
    });
</script>

如果您想使用vanilla Javascript,您可以这样做:

<script>
    document.addEventListener("DOMContentLoaded", function(){
        document.getElementById("form").setAttribute("autocomplete", "off");
    });
</script>

注意:对于第二个解决方案,请确保您的浏览器包含在此处:https://developer.mozilla.org/en-US/docs/DOM/Mozilla_event_reference/DOMContentLoaded#Browser_compatibility 如果不是,您可能最好使用第一种解决方案。

答案 2 :(得分:5)

不幸的是,标准<h:form>组件没有autocomplete属性。您必须在每个输入的基础上关闭它或为UIForm编写自定义渲染器。

目前有一个未解决的问题,要求将此属性添加到<h:form>JSF spec issue 418。目前,它计划用于JSF 2.2。

同时,您可以使用OmniFaces Html5RenderKit获取autocomplete="off"组件<h:form>的支持。