2010-07-09 36 views

Respuesta

5

Desafortunadamente, el componente <h:form> estándar no tiene un atributo autocomplete. Tendrá que desactivarlo por cada entrada o escribir un procesador personalizado para el UIForm.

Actualmente hay un problema abierto que solicita agregar este atributo al <h:form>: JSF spec issue 418. Actualmente, está programado para JSF 2.2.

Mientras tanto, puede usar OmniFaces Html5RenderKit para obtener soporte para autocomplete="off" en el componente <h:form>.

7

Una solución rápida real con Javascript sería (suponiendo que tienes jQuery cargado):

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

Si desea permanecer con vainilla JavaScript, puede hacer:

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

Nota: Para la segunda solución, asegúrese de que su navegador esté cubierto aquí: https://developer.mozilla.org/en-US/docs/DOM/Mozilla_event_reference/DOMContentLoaded#Browser_compatibility De lo contrario, es mejor que utilice la primera solución.

+0

Durante el uso de jQuery, si el ID de su formulario contiene el carácter ':' obtendrá un pseudo error no admitido. Puede usar $ (document.getElementById ('parentElement: formElement'). Attr ("autocompletar", "off"); si este es el caso, consulte http://stackoverflow.com/questions/16077280/uncaught-error- sintaxis-error-unrecognized-expression-unsupported-pseudo para más detalles – vahapt

+0

mejor solución viable para mí. usando jsf 2.0 – Fritz

6

La forma mejor y más fácil de hacer esto es la siguiente:

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

No se olvide de añadir a su xmlns:f="http://xmlns.jcp.org/jsf/core"head attribite si usted no tiene ya.

¿Por qué?

  1. Porque si tienes un evento ajax algún lugar de la página que necesita para actualizar/procesamiento de su forma, no va a perder el atributo autocomplete.
  2. Porque se ve sexy (la forma JS se ve fea).

Consejo: Puede utilizar f:passThroughAttribute para cada elemento de JSF que no tiene ningún atributo específico de especificaciones de HTML más recientes.

+1

Lamentablemente, esto solo funciona con JSF 2.2. Todavía es la mejor solución, si es compatible. – Roben

Cuestiones relacionadas