/ / Primefaces cambia el atributo del elemento a través de Javascript - javascript, jsf, primefaces

Las interfaces primarias cambian el atributo de elemento a través de Javascript - javascript, jsf, primefaces

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 № 1

Dos opciones:

  1. Simplemente usa EL en collapsed atributo para comprobar algún estado del modelo en lugar de especificar un código duro true.

    <p:panel ... collapsed="#{not bean.ajaxMethodCalled}">
    

    De que te aseguras de que isAjaxMethodCalled() devoluciones true 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.

  2. 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.