how to do autocomplete="off" at form level in JSF

how to do autocomplete="off" at form level in JSF?


Solution 1:

The best and easiest way of doing this is this:

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

Don't forget to add xmlns:f="http://xmlns.jcp.org/jsf/core" to your head attribite if you don't have already.

Why?

  1. Because if you have an ajax event somewhere in your page that needs to update/render your form, it will not loose the autocomplete attribute.
  2. Because it looks sexy (JS way looks ugly).

Tip: You can use f:passThroughAttribute for every JSF element which does not have any specific attribute of newer HTML specifications.

Solution 2:

A real quick solution with Javascript would be (assuming you have got jQuery loaded):

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

If you want to stay with vanilla Javascript, you can do:

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

Note: For the second solution make sure your browser is covered here: https://developer.mozilla.org/en-US/docs/DOM/Mozilla_event_reference/DOMContentLoaded#Browser_compatibility If not you might be better off using the first solution.