Primefaces - Reaproveitamento Dialog´s

Olás,

Tenho um dialog. Chamo ele nas view´s usando o ui:include. Esta dialog tem um update no commandButton para atualizar uma componente da tela que acionou o dialog.

O problema começa a ocorrer quando preciso chamar este dialog de outro lugar. Como ele tem um update pra um componente específico, se chamo de outra tela que não tem este componente dá erro, impedindo que eu reutilize este dialog.

Vcs já se deparam com esta situação?

Aguardo sugestões.

Obrigado :wink:

Na boa? Vale mais a pena você construir um dialog por utilização.

RIA com JSF/Primefaces tem uns bugs bizarros quando a gente começa a reutilizar certas coisas… =/

[quote=jakefrog]Na boa? Vale mais a pena você construir um dialog por utilização.

RIA com JSF/Primefaces tem uns bugs bizarros quando a gente começa a reutilizar certas coisas… =/[/quote]

Pois é… foi o que pensei… agora fico com a consciência traquila, rsrsrsrsrs.

voce esta querendo trabalhar com ui:composite
seque exemplo de um dialogo de exclusao de que uso generico na minha aplicacao

<ui:composition 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"
	xmlns:composite="http://java.sun.com/jsf/composite">

	<!-- INTERFACE -->
	<composite:interface>  
		  <composite:attribute name="actionListener"  method-signature="void actionListener(javax.faces.event.ActionEvent)" />
		  <composite:attribute name="update"/>
		  <composite:attribute name="onclick"></composite:attribute>
		  <composite:attribute name="dialogVar"></composite:attribute>
	</composite:interface>
	<composite:implementation>
	
	
	
	<p:confirmDialog id="excluirDlg" message="Deseja Realmente Efetuar esta Operacao ?" 
                header="Processo de Exclusao" severity="alert" widgetVar="#{cc.attrs.dialogVar}" style="z-index:999 !important;"  >  
        <p:commandButton immediate="true"  value="Sim" update="#{cc.attrs.update}" oncomplete="#{cc.attrs.dialogVar}.hide();#{cc.attrs.onclick}"  actionListener="#{cc.attrs.actionListener}"/>
        <p:commandButton  value="Nao" onclick="confirmation.hide();#{cc.attrs.onclick}"  />
  
    </p:confirmDialog>
			
	</composite:implementation>
	
</ui:composition>

tudo que esta na interface voce pode passar como parametro e acessa o valor pelo name atraves desse “cc.attrs”. que é padrao do jsf.
voce tem que seguir alguma regras de arquitetura como por exemplo.

voce tem(pelo menos acho que é obrigatorio) criar seus componentes dentro de uma pasta chamado “resources” … /WebContent/resources/qualquerEstrutura daqui pra frente
digamos que voce crie /WebContent/resources/dialog basta na pagina ou até mesmo em outro compoenente que voce queira utilizar esse dialog importar o namespace

xmlns:dlgs ="http://java.sun.com/jsf/composite/dialog" <dlgs:confimaExclusao dialogVar="blabla" actionListener="blabla" update="blabla" />

Mas concordo plenamente com jakefrog, jsf + primefaces + componentes = leve dor de cabeça as vezes;

Boa tarde, Rodrigo, como vai?

Após utilizar o código que você disponibilizou neste fórum: http://www.guj.com.br/java/280603-primefaces---reaproveitamento-dialogs, deparei-me com a seguinte mensagem de erro ao visualizar a página contendo a utilização deste componente: java.lang.ClassCastException: java.lang.String cannot be cast to javax.el.ValueExpression

Você também passou pelo mesmo problema anteriormente?

Fico no aguardo.
Obrigado!

Luís

tem string no lugar de el… só vendo o codigo, tem como postar ?

cara, eu apenas copiei e colei o código que vc disponibilizou acima.
Será que pode ter algo nele que nenhum de nós percebemos?