Quantcast
Channel: Programação - GUJ
Viewing all articles
Browse latest Browse all 33093

COMPOSITE + Primefaces - Como fazer update em outro componente?

$
0
0

@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

Ler tópico completo


Viewing all articles
Browse latest Browse all 33093


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>