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

Ish*_*sha 10 jsf

如何在JSF的表单级别执行autocomplete ="off"?

Fel*_*lix 9

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

<script>
    $(function(){
        $("#form").attr("autocomplete", "off");
    });
</script>
Run Code Online (Sandbox Code Playgroud)

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

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

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


Mat*_*ari 9

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

<h:form id="myForm">
    <f:passThroughAttribute name="autocomplete" value="off"/>
    ...
</h:form>
Run Code Online (Sandbox Code Playgroud)

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

为什么?

  1. 因为如果你的页面某处有一个需要更新/渲染表单的ajax事件,它就不会丢失该autocomplete属性.
  2. 因为它看起来很性感(JS方式看起来很难看).

提示:您可以使用f:passThroughAttribute不具有较新HTML规范的任何特定属性的每个JSF元素.


Bal*_*usC 5

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

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

同时,您可以使用OmniFacesHtml5RenderKit获得autocomplete="off"<h:form>组件的支持.