/ / Primefaces muda o atributo do elemento via Javascript - javascript, jsf, primefaces

Primefaces mudam o atributo do elemento via Javascript - javascript, jsf, primefaces

Eu estou trabalhando em projeto que usa Primefaces 3.5 (sim, é uma versão bastante antiga). O que eu queria implementar é uma função em Javascript, que irá alterar o atributo do elemento Primefaces. É possível fazer?

O que eu tenho é um painel definido como:

<p:panel id="mypanel" widgetVar="mypanelWidget" header="A title here" toggleable="true" toggleOrientation="vertical" collapsed="true">

E minha ideia é mudar collapsed="true" para collapsed="false" com Javascript.

Essa necessidade surgiu por causa de uma chamada de ajax que atualiza o painel e, quando é atualizada, aparece como colapsada. Fazendo mypanelWidget.expand() no retorno de chamada não é uma boa ideia, pois minha página fica muito animada.

Respostas:

2 para resposta № 1

Duas opções:

  1. Basta usar EL em collapsed atributo para verificar algum estado do modelo em vez de especificar um código true.

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

    Onde você se certifica de que isAjaxMethodCalled() retorna true se o método de interesse ajax foi chamado. Ele não precisa necessariamente ser uma propriedade booleana, pode ser qualquer coisa, incluindo a verificação do mapa do parâmetro de solicitação HTTP, desde que ele seja avaliado para o resultado booleano desejado.

  2. Não atualize o painel durante a chamada ajax. Em vez disso, atualize seu conteúdo.

    <p:panel ...>
    <h:panelGroup layout="block" id="panelContents">
    ...
    <p:ajax update="panelContents" />
    ...
    </h:panelGroup>
    </p:panel>
    

    Desta forma, o estado da representação HTML do painel na árvore HTML DOM permanece intacto.