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 № 1Duas opções:
Basta usar EL em
collapsed
atributo para verificar algum estado do modelo em vez de especificar um códigotrue
.<p:panel ... collapsed="#{not bean.ajaxMethodCalled}">
Onde você se certifica de que
isAjaxMethodCalled()
retornatrue
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.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.