Novo Primefaces 5 - problemas com dialog e ajax

10 respostas
D

As novidades do PF 5 estão muito boas, contudo estou sofrendo para implementar. Perdi toda compatibilidade que tinha para abrir Dialogs, ex: <p:commandButton icon="ui-icon-pencil" update=":formdlg1:telaedicao" oncomplete="dlg.show()" > <f:setPropertyActionListener value="#{disp}" target="#{dispositivoMB.dispositivo}" /> </p:commandButton> não funcionou mais. Para piorar usei o exemplo do showcase e tb não funcionou,
tentei com:

<p:commandButton id="basic" value="Basic" onclick="PF('dlg').show();" type="button" /> e tb não funcionou. Alguém sabe o que está errado ou conhece alguma solução…
Obrigado.

10 Respostas

D

coloca o código do dialog para olharmos…

N

Também estou enfrentando o mesmo problema. Alguém já conseguiu resolver este problema?

Apenas modifiquei a biblioteca, da 4 para a 5, e agora os dialogs não funcionam mais, nem a navegação de páginas (ajax).

N

Consegui resolver o problema com a seguinte informação:

Mudanças do primefaces 4.0 to 5.0

Widgets must be referenced via “PF”. e.g. PF(‘widgetVarName’).show() instead of widgetVarName.show();

T

nasper1904 sua dica deu certo para chamadas pelo xhtml, no entanto, nas chamadas pelo bean ainda não consegui

RequestContext.getCurrentInstance().closeDialog(“nomeDoMeuDialogo”);

da o erro:

GRAVE: java.lang.NullPointerException: Erro de argumento: O parâmetro key é nulo

Alguma ideia para isso?

N

No bean eu faço da seguinte forma:

RequestContext.getCurrentInstance().execute("PF('nomeDialogNoAtributoWidgetVar').show()");

É uma alternativa também.

T

nasper1904,

funcionou certinho, muito obrigado!!!

Você já esta usando o primefaces 5 em produção? Está estável?

Qual a versão do seu mojarra? Estou aproveitando que estou fazendo a atualização do primefaces e atualizei para o mojarra 2.2.7

N

to usando a 2.2.6 e o primefaces 5.

Por enquanto não tenho tido problemas, tem funcionado bem. O único que tive foi esse dos dialogs.

já estamos utilizando em produção sim, só que em uma aplicação simples, com poucas telas de cadastro.

C

Boa tarde.

Desculpem em reviver este tópico, mas com a mudança para o primefaces 5, estou tendo dificuldades com o dialog ele não abre:

<f:facet name="footer">
			<p:commandButton id="cmdIncluirVei" value="Incluir"
				action="#{veiculosMB.novoVeiculos()}" process="@this"
				ajax="true" oncomplete="PF('dialogVeiculos').show()"
		  	icon="ui-icon-circle-plus" />
			<p:tooltip for="cmdIncluirVei" value="Incluir Veículo"
				showEffect="slide" hideEffect="slide" />
		</f:facet>

Já removi o ajax=true, ajax=false, deixei sem ambas opções, removi o process="@this, troquei o oncomplete para onclick, com este último até abre, mas não na primeira vez, se clico de novo ai funciona, é intermitente.
Enfim alguém sabe como executar um action e depois abrir um dialog agora nesta nova versão, como eles mudam tudo, sem padrão, rsrsrs.

Abs.

N

vou postar o meu código:

&lt;p:column &gt;
							&lt;p:commandButton id="showAddAutorButton" icon="ui-icon-plus"
								process="form:autores" title="Adicionar Autor"
								onclick="PF('dlgNovoAutor').show()" /&gt;
						&lt;/p:column&gt;
&lt;p:dialog header="Cadastro de Autor" widgetVar="dlgNovoAutor"
			resizable="false" modal="true"&gt;
			&lt;h:form&gt;
				&lt;h:panelGrid columns="2"&gt;
					&lt;p:outputLabel value="Nome:" for="nome" /&gt;
					&lt;p:inputText id="nome" value="#{bean.autorAdd.nome}"
						required="true" requiredMessage="Campo nome deve ser digitado" /&gt;

					&lt;p:commandButton value="Gravar" action="#{bean.gravarAutor}"
						oncomplete="PF('dlgNovoAutor').hide();" process="@form"
						update="@form #{camposToUpdate}" /&gt;
				&lt;/h:panelGrid&gt;
			&lt;/h:form&gt;
		&lt;/p:dialog&gt;
N

a página inteira:

&lt;?xml version="1.0" encoding="UTF-8" ?&gt;
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:p="http://primefaces.org/ui"&gt;

&lt;ui:composition template="/WEB-INF/template/_template.xhtml"&gt;

	&lt;ui:define name="conteudo"&gt;
		&lt;script type="text/javascript" src="js/traducaoCalendario.js"&gt;&lt;/script&gt;
		&lt;h:form id="form"&gt;

			&lt;!--  Formulário de cadastro de itemAcervo --&gt;
			&lt;p:fieldset legend="Cadastro de Obra" toggleable="true" collapsed="#{empty obraBean.obra.id}"&gt;
				&lt;p:panelGrid&gt;
					&lt;p:row&gt;
						&lt;p:column&gt;
							&lt;p:outputLabel value="Tipo de Obra:" for="tipoObra" /&gt;
						&lt;/p:column&gt;
						&lt;p:column&gt;
							&lt;p:selectOneMenu id="tipoObra" value="#{obraBean.obra.tipoObra}"
								converter="#{entityConverter}"&gt;
								&lt;f:selectItem itemLabel="Selecione o Tipo" itemValue="#{null}" /&gt;
								&lt;f:selectItems value="#{obraBean.listaTiposObra}" var="t"
									itemLabel="#{t.nome}" itemValue="#{t}" /&gt;
							&lt;/p:selectOneMenu&gt;
						&lt;/p:column&gt;
					&lt;/p:row&gt;
				&lt;/p:panelGrid&gt;
				<br />
				&lt;!-- ....................................DADOS DE ITEM ACERVO......................................... --&gt;
				&lt;ui:include src="/WEB-INF/includes/dadosItemAcervo.xhtml"&gt;
					&lt;ui:param name="titulo" value="Dados da Obra" /&gt;
					&lt;ui:param name="itemAcervoBean" value="#{obraBean}" /&gt;
				&lt;/ui:include&gt;

				<br />
				&lt;!-- ....................................DADOS DA OBRA................................................ --&gt;
				&lt;p:panelGrid style="width:99%"&gt;
					&lt;p:row&gt;
						&lt;p:column&gt;
							&lt;p:outputLabel value="Edição:" for="edicao" /&gt;
						&lt;/p:column&gt;
						&lt;p:column&gt;
							&lt;p:inputMask id="edicao" mask="9?99" placeHolder=" "
								value="#{obraBean.obra.edicao}" size="2" /&gt;
						&lt;/p:column&gt;
						&lt;p:column&gt;
							&lt;p:outputLabel value="Volume: " for="volume" /&gt;
						&lt;/p:column&gt;
						&lt;p:column&gt;
							&lt;p:inputMask id="volume" mask="9?99" placeHolder=" "
								value="#{obraBean.obra.volume}" size="2" /&gt;
						&lt;/p:column&gt;
						&lt;p:column&gt;
							&lt;p:outputLabel value="Ano:" for="ano" /&gt;
						&lt;/p:column&gt;
						&lt;p:column&gt;
							&lt;p:inputMask id="ano" value="#{obraBean.obra.ano}" mask="9999"
								size="2" /&gt;
						&lt;/p:column&gt;
					&lt;/p:row&gt;
					&lt;p:row&gt;
						&lt;p:column&gt;
							&lt;p:outputLabel value="É Ilustrado?" for="ehIlustrado" /&gt;
						&lt;/p:column&gt;
						&lt;p:column&gt;
							&lt;p:selectBooleanCheckbox id="ehIlustrado"
								value="#{obraBean.obra.ehIlustrado}" /&gt;
						&lt;/p:column&gt;
						&lt;p:column&gt;
							&lt;p:outputLabel value="Não Paginado?" for="naoPaginado" /&gt;
						&lt;/p:column&gt;
						&lt;p:column&gt;
							&lt;p:selectBooleanCheckbox id="naoPaginado"
								value="#{obraBean.obra.naoPaginado}"&gt;
								&lt;p:ajax event="change" process=":form:naoPaginado"
									update=":form:numPaginas" /&gt;
							&lt;/p:selectBooleanCheckbox&gt;
						&lt;/p:column&gt;
						&lt;p:column&gt;
							&lt;p:outputLabel value="Nº de Páginas:" for="numPaginas" /&gt;
						&lt;/p:column&gt;
						&lt;p:column&gt;
							&lt;p:inputText id="numPaginas" widgetVar="numPaginas"
								value="#{obraBean.obra.numPaginas}" size="2"
								disabled="#{obraBean.obra.naoPaginado}" /&gt;
						&lt;/p:column&gt;
					&lt;/p:row&gt;

					&lt;p:row&gt;
						&lt;p:column&gt;
							&lt;p:outputLabel value="ISBN:" for="isbn" /&gt;
						&lt;/p:column&gt;
						&lt;p:column colspan="2"&gt;
							&lt;p:inputText id="isbn" value="#{obraBean.obra.isbn}" /&gt;
						&lt;/p:column&gt;
						&lt;p:column&gt;
							&lt;p:outputLabel value="Cutter:" for="cutter" /&gt;
						&lt;/p:column&gt;
						&lt;p:column colspan="2"&gt;
							&lt;p:inputText id="cutter" value="#{obraBean.obra.cutter}"
								validatorMessage="Cutter não pode ser superio a 5 caracteres"&gt;
								&lt;f:validateLength maximum="5" /&gt;
							&lt;/p:inputText&gt;
						&lt;/p:column&gt;
					&lt;/p:row&gt;
					&lt;p:row&gt;
						&lt;p:column&gt;
							&lt;p:outputLabel value="Série:" for="serie" /&gt;
						&lt;/p:column&gt;
						&lt;p:column colspan="2"&gt;
							&lt;p:inputText id="serie" value="#{obraBean.obra.serie}" /&gt;
						&lt;/p:column&gt;
						&lt;p:column&gt;
							&lt;p:outputLabel value="Classificação:" for="classificacao" /&gt;
						&lt;/p:column&gt;
						&lt;p:column colspan="2"&gt;
							&lt;p:inputText id="classificacao"
								value="#{obraBean.obra.classificacao}" /&gt;
						&lt;/p:column&gt;
					&lt;/p:row&gt;
					&lt;p:row&gt;
					
						&lt;p:column&gt;
							&lt;p:outputLabel value="Autores:" for="autores" /&gt;
						&lt;/p:column&gt;
						&lt;p:column colspan="4"&gt;
							&lt;p:autoComplete minQueryLength="2" id="autores"
								value="#{obraBean.obra.autores}"
								completeMethod="#{obraBean.autorDAO.findByNome}" var="a"
								itemLabel="#{a.nome}" itemValue="#{a}"
								converter="#{entityConverter}" forceSelection="true"
								multiple="true" /&gt;
						&lt;/p:column&gt;
						&lt;p:column &gt;
							&lt;p:commandButton id="showAddAutorButton" icon="ui-icon-plus"
								process="form:autores" title="Adicionar Autor"
								onclick="PF('dlgNovoAutor').show()" /&gt;
						&lt;/p:column&gt;
					&lt;/p:row&gt;
				&lt;/p:panelGrid&gt;

				&lt;!-- ....................................BOTÕES......................................................... --&gt;
				&lt;p:toolbar
					style="margin-top: 10px; margin-bottom: 10px; width: 98%;"&gt;
					&lt;f:facet name="right"&gt;

						&lt;p:commandButton value="#{obraBean.stringBotaoGravar}"
							action="#{obraBean.gravar}" process="@form"
							update="@form :formTabela:tabela" /&gt;

						&lt;p:separator /&gt;

						&lt;p:commandButton value="Cancelar" update="@form"
							action="#{obraBean.recarregarPagina}" immediate="true" /&gt;

					&lt;/f:facet&gt;
				&lt;/p:toolbar&gt;
			&lt;/p:fieldset&gt;
&lt;!-- Solucioina o bug de dialog que aparece ao pressionar enter --&gt;
			&lt;p:commandButton id="btnDefault" style="display:none"/&gt;
			&lt;p:defaultCommand target="btnDefault" /&gt;
		&lt;/h:form&gt;
		<br/>
		&lt;!-- ....................................TABELA......................................................... --&gt;
		&lt;p:fieldset legend="Obras Cadastradas"&gt;
			&lt;h:form id="formTabela"&gt;
			&lt;p:dataTable id="tabela" value="#{obraBean.lazyDataModel}"
				var="obra" paginator="true" lazy="true" rows="5"
				mptyMessage="Nenhums Obra cadastrada"
				rowsPerPageTemplate="5 10 15 20 30 40" paginatorPosition="bottom"
				paginatorAlwaysVisible="false"&gt;

				&lt;p:column filterBy="#{obra.titulo}" filterMatchMode="contains"   headerText="Título"&gt;
					&lt;h:outputText value="#{obra.titulo}" /&gt;
				&lt;/p:column&gt;
				&lt;p:column filterBy="#{obra.isbn}" headerText="ISBN" style="width: 100px"&gt;
					&lt;h:outputText value="#{obra.isbn}" /&gt;
				&lt;/p:column&gt;
				&lt;p:column headerText="Editora"&gt;
					&lt;h:outputText value="#{obra.editora.nome}" /&gt;
				&lt;/p:column&gt;
				&lt;p:column headerText="Local" style="width: 100px"&gt;
					&lt;h:outputText value="#{obra.local.nome}" /&gt;
				&lt;/p:column&gt;
				&lt;p:column headerText="Autores"&gt;
					&lt;h:outputText value="#{obra.autoresToString}" /&gt;
				&lt;/p:column&gt;
				&lt;p:column headerText="Assuntos"&gt;
					&lt;h:outputText value="#{obra.assuntosToString}" /&gt;
				&lt;/p:column&gt;
				&lt;p:column headerText="Tipo"&gt;
					&lt;h:outputText value="#{obra.tipoObra}" /&gt;
				&lt;/p:column&gt;
				&lt;p:column headerText="Alterar" style="width: 80px"&gt;
					&lt;p:commandButton icon="ui-icon-pencil" title="Alterar Obra"
						update=":form"&gt;
						&lt;f:setPropertyActionListener value="#{obra}"
							target="#{obraBean.itemAcervo}" /&gt;
					&lt;/p:commandButton&gt;
					&lt;p:commandButton icon="ui-icon-tag" title="Incluir Exemplares"
						oncomplete="PF('dlgExemplares').show()"
						action="#{obraBean.updateListaExemplares}"
						update="@form :formExemplares"&gt;
						&lt;f:setPropertyActionListener value="#{obra}"
							target="#{obraBean.itemAcervo}" /&gt;
					&lt;/p:commandButton&gt;
				&lt;/p:column&gt;
			&lt;/p:dataTable&gt;
			&lt;/h:form&gt;
		&lt;/p:fieldset&gt;

		&lt;ui:include src="/WEB-INF/includes/dialogAutor.xhtml"&gt;
			&lt;ui:param name="bean" value="#{obraBean}" /&gt;
			&lt;ui:param name="camposToUpdate" value=":form:autores" /&gt;
		&lt;/ui:include&gt;
		
		&lt;ui:include src="/WEB-INF/includes/dialogExemplares.xhtml"&gt;
			&lt;ui:param name="itemAcervoBean" value="#{obraBean}" /&gt;
		&lt;/ui:include&gt;

		&lt;ui:include src="/WEB-INF/includes/dialogsAux.xhtml"&gt;
			&lt;ui:param name="itemAcervoBean" value="#{obraBean}" /&gt;
		&lt;/ui:include&gt;
	&lt;/ui:define&gt;
&lt;/ui:composition&gt;
&lt;/html&gt;
Criado 6 de maio de 2014
Ultima resposta 3 de jul. de 2014
Respostas 10
Participantes 5