formulario event etiqueta ejemplos actualizar jsf jsf-2 rendered-attribute conditional-rendering ajax-update

jsf - event - f:ajax listener



La actualizaciĆ³n/renderizaciĆ³n Ajax no funciona en un componente que tiene un atributo renderizado (1)

Estoy tratando de ajax-actualizar un componente condicionalmente renderizado.

<h:form> ... <h:commandButton value="Login" action="#{login.submit}"> <f:ajax execute="@form" render=":text" /> </h:commandButton> </h:form> <h:outputText id="text" value="You''re logged in!" rendered="#{not empty user}" />

Sin embargo, eso no funciona. Puedo asegurar que #{user} está realmente disponible. ¿Cómo es esto causado y cómo puedo resolverlo?


No es posible volver a procesar (actualizar) un componente por ajax si el componente en sí no se representa en primer lugar. El componente debe representarse siempre antes de que ajax pueda volver a representarlo. Ajax está utilizando JavaScript document.getElementById() para encontrar el componente que necesita actualizarse. Pero si JSF no ha representado el componente en primer lugar, entonces JavaScript no puede encontrar nada para actualizar.

La solución es simplemente hacer referencia a un componente principal que siempre se representa.

<h:form> ... <h:commandButton ...> <f:ajax ... render=":text" /> </h:commandButton> </h:form> <h:panelGroup id="text"> <h:outputText ... rendered="#{not empty user}" /> </h:panelGroup>

Ver también: