Estoy trabajando en un proyecto que utiliza Primefaces 3.5 (sí, es una versión bastante antigua). Lo que quería implementar es una función en Javascript, que cambiará el atributo del elemento Primefaces. Es posible de hacer?
Lo que tengo es un panel definido como:
<p:panel id="mypanel" widgetVar="mypanelWidget" header="A title here" toggleable="true" toggleOrientation="vertical" collapsed="true">
Y mi idea es cambiar. collapsed="true"
a collapsed="false"
con Javascript.
Esta necesidad surgió debido a una llamada ajax que actualiza el panel, y cuando se actualiza, aparece como contraída. Obra mypanelWidget.expand()
en la devolución de llamada no es una buena idea ya que mi página se vuelve muy animada.
Respuestas
2 para la respuesta № 1Dos opciones:
Simplemente usa EL en
collapsed
atributo para comprobar algún estado del modelo en lugar de especificar un código durotrue
.<p:panel ... collapsed="#{not bean.ajaxMethodCalled}">
De que te aseguras de que
isAjaxMethodCalled()
devolucionestrue
Si el método de interés ajax fue llamado. No necesariamente tiene que ser una propiedad booleana, puede ser cualquier cosa, incluida la verificación del mapa de parámetros de solicitud HTTP, siempre y cuando se evalúe el resultado booleano deseado.No actualice el panel durante la llamada ajax. En su lugar, actualice su contenido.
<p:panel ...> <h:panelGroup layout="block" id="panelContents"> ... <p:ajax update="panelContents" /> ... </h:panelGroup> </p:panel>
De esta manera, el estado de la representación HTML del panel en el árbol DOM de HTML permanece intacto.