2010-06-01 11 views
5

Estoy desarrollando una aplicación JSF y tengo muchos formularios de usuario donde uso validaciones JSF. Tengo un problema que me molesta, será más fácil contarlo con un ejemplo.Cómo borrar h: message o rich: ¿valor del mensaje en JSF?

    <h:panelGroup> 
        <h:selectOneRadio id="gender" value="#{registrationController.person.gender}" 
             required="true" requiredMessage="#{msg.commonErrorBlankField}"> 
         <f:selectItems value="#{registrationController.genders}" /> 
        </h:selectOneRadio> 
        <rich:spacer /> 
        <rich:message for="gender" errorLabelClass="errorLabel"> 
         <f:facet name="errorMarker"> 
          <h:graphicImage value="#{msg.imageExclamation}" /> 
         </f:facet> 
        </rich:message> 
       </h:panelGroup> 

Arriba, si no se selecciona una opción de radio, se muestra un mensaje. Y cuando el usuario hace una selección, veo el error de validación disseapeares. Lo suficientemente justo ! Mi problema es cuando el usuario navega a la página siguiente y luego, al usar el botón Atrás del navegador, vuelve a esta página. Puedo ver que mi campo de sexo se selecciona en consecuencia pero aún se muestra el error de validación.

¿Alguien sabe si hay una solución para borrar el campo h: mensaje una vez que hago clic en el botón de comando para que el error de validación no se muestre cuando regrese a la misma página?

Respuesta

1

No estoy seguro de si esto funciona. Yo no lo he probado:

//idComponent is the Component whose message you want to clear, e.g. gender 
void clearMessageForComponent (final String idComponent) { 
     if (idComponent != null) { 
      Iterator<FacesMessage> it = FacesContext.getCurrentInstance().getMessages(idComponent); 
      while(it.hasNext()){ 
       ((FacesMessage)it.next()).setDetail(""); 
      } 
     } 
    } 
0

Borrado de los mensajes de la FacesContext no va a arreglar el problema, ya que esto afectará sólo al estado del lado del servidor de la aplicación. Al presionar el botón de retroceso del navegador, el navegador del cliente vuelve a cargar la página desde el caché del navegador local.

Es importante comprender que el botón Atrás del navegador no activará una solicitud al servidor.

1

Es importante entender que el botón Atrás del navegador no activará una solicitud al servidor.

que no es del todo correcto, los navegadores modernos activan una solicitud si los datos se publicaron en etapas anteriores de la navegación.

Cuestiones relacionadas