@Alexrodrigosantos escreveu:
Bom dia a todos, estou criando um composite componente para agilizar meu desenvolvimento. Estou utlizando JSF 2.2 + Primefaces 6.0, estou conseguindo fazer os updates dentro do componente porém gostaria que o composite componente também atualizasse outros componentes da view. Existe alguma forma de fazer isso? Já procurei em vários tópicos e nenhum resolveu o meu problema. Seguem abaixo os códigos:
CODIGO datatablePanel.xhtml:
<ui:component xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:p="http://primefaces.org/ui" xmlns:cc="http://java.sun.com/jsf/composite"> <cc:interface> <cc:attribute name="controller" type="br.com.srasystems.integration.controller.generic.GenericController" required="true" /> <cc:attribute name="var" default="o" /> <cc:attribute name="sortBy" /> <cc:attribute name="rows" default="50" /> <cc:attribute name="title" /> <cc:attribute name="update" /> <cc:attribute name="addFocus" /> <cc:attribute name="editFocus" /> </cc:interface> <cc:implementation> <p:panel toggleable="true" id="panel"> <f:facet name="header"> <h:outputText value="" styleClass="fa fa-list st-title-icon" /> <h:outputText value="#{cc.attrs.title}" /> </f:facet> <f:facet name="actions"> <h:form id="acoes" styleClass="st-form-inline"> <p:commandLink id="excluir" action="#{cc.attrs.controller.excluir()}" update="" rendered="#{cc.attrs.controller.permitirExclusao()}" styleClass="ui-panel-titlebar-icon ui-button ui-state-default ui-corner-all st-title-actions-link"> <h:outputText value="" styleClass="fa fa-eraser st-title-icon" /> <h:outputText value="#{rb['lbl.doDelete']}" /> <p:confirm header="#{rb['lbl.enviroment']}" icon="fa fa-alert" message="#{rb['msg.confirmDelete']}" /> </p:commandLink> <p:commandLink id="alteracao" rendered="#{cc.attrs.controller.permitirAlteracao()}" action="#{cc.attrs.controller.prepararAlteracao()}" update="" styleClass="ui-panel-titlebar-icon ui-button ui-state-default ui-corner-all st-title-actions-link" oncomplete="selecionar('#{cc.attrs.editFocus}')"> <h:outputText value="" styleClass="fa fa-pencil st-title-icon" /> <h:outputText value="#{rb['lbl.doUpdate']}" /> </p:commandLink> <p:commandLink id="inclusao" action="#{cc.attrs.controller.prepararInclusao()}" update="" rendered="#{cc.attrs.controller.permitirInclusao()}" styleClass="ui-panel-titlebar-icon ui-button ui-state-default ui-corner-all st-title-actions-link" oncomplete="selecionar('#{cc.attrs.addFocus}')"> <h:outputText value="" styleClass="fa fa-plus st-title-icon" /> <h:outputText value="#{rb['lbl.doAdd']}" /> </p:commandLink> </h:form> </f:facet> <h:form id="datatable"> <p:dataTable value="#{cc.attrs.controller.lazyDataModel}" var="o" selection="#{cc.attrs.controller.selecionados}" lazy="true" rows="#{cc.attrs.rows}" paginator="true" rowSelectMode="checkbox" emptyMessage="#{rb['msg.emptyData']}" paginatorPosition="#{rb['prop.paginatorPosition']}" paginatorTemplate="#{rb['prop.paginatorTemplate']}" currentPageReportTemplate="#{rb['prop.currentPageReportTemplate']}" rowsPerPageTemplate="#{rb['prop.rowsPerPageTemplate']}"> <p:ajax event="rowSelectCheckbox" listener="#{cc.attrs.controller.marcar}" update="@parent:@parent:acoes #{cc.attrs.update}" /> <p:ajax event="rowUnselectCheckbox" listener="#{cc.attrs.controller.desmarcar}" update="@parent:@parent:acoes #{cc.attrs.update}" /> <p:ajax event="toggleSelect" listener="#{cc.attrs.controller.marcarTodos}" update="@parent:@parent:acoes #{cc.attrs.update}" /> <p:column selectionMode="multiple" styleClass="st-dt-checkbox" /> <cc:insertChildren /> </p:dataTable> </h:form> </p:panel> </cc:implementation> </ui:component>
CÓDIGO teste.xhtml:
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:p="http://primefaces.org/ui" xmlns:app="http://java.sun.com/jsf/composite/application" xmlns:sra="http://srasystems.com.br/sra"> <ui:composition template="/system/index.xhtml"> <ui:define name="content"> <app:datatablePanel id="datatablePanel" update="texto" controller="#{pessoaController}" var="o" title="#{rb['lbl.people']}"> <p:column headerText="ID" sortBy="#{o.id}"> <h:outputText value="#{o.id}" /> </p:column> <p:column headerText="Nome/Razacao" sortBy="#{o.value}"> <h:outputText value="#{o.value}" /> </p:column> </app:datatablePanel> <h:form id="texto"> <h:outputText value="SELECIONADOS: #{ambienteController.selecionados.size()}" /> </h:form> </ui:define> </ui:composition> </html>
O que gostaria de fazer é atualizar o <h:form id="texto" porém isso não acontece (Tenho certeza que o componente está funcionando pois é exibida uma mensagem no console quando um objeto é selecionado e os botões de ações são exibidos/escondidos corretamente). Existe alguma forma de fazer isso?
Desde já agradeço a atenção de todos
Mensagens: 1
Participantes: 1