Como Chamar o <p:Dialog> de outra pagina xhtml

17 respostas
D

Boa tarde pessoal estou criando um sistema com jsf e primefaces e surgiu uma duvida.
Tem como eu chamar um evento Dialog de uma pagina xhtml em outra pagina.

EX: Nesta pagina xhtml tenho esse codigo.

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:p="http://primefaces.prime.com.tr/ui">
    <h:head>
        <title>TODO supply a title</title>
    </h:head>
    <h:body>
      
        <p:dialog header="Usuario" widgetVar="dialogGerUsuario"  resizable="false" modal="true" showEffect="slide" width="500">
             <h:form prependId="false">
                <h:panelGrid id="infosUsuario" columns="2" style="margin-bottom:10px">

                    <h:outputLabel for="nome" value="Nome:" />
                    <h:inputText id="nome" value="#{usuarioController.usuario.nome}"/>

                    <h:outputLabel for="senha" value="Senha:" />
                    <h:inputText id="senha" value="#{usuarioController.usuario.senha}"/>

                    <h:outputLabel for="email" value="E-mail" />
                    <h:inputText id="email" value="#{usuarioController.usuario.email}"/>

                   

                    <p:commandButton update="tabela" oncomplete="dialogGerUsuario.hide();" actionListener="#{usuarioController.adicionarUsuario(actionEvent)}" value="Inserir Usuario"/>
                    <p:commandButton update="tabela" oncomplete="dialogGerUsuario.hide();" actionListener="#{usuarioController.alterarUsuario(actionEvent)}" value="Alterar Usuario"/>

                </h:panelGrid>
            </h:form>
        </p:dialog>
       
     
    </h:body>   
    
</html>

Quero chamar esse Dialog em outra pagina.

17 Respostas

Hebert_Coelho

basta você fazer o include de seu dialog na página da página que você quer chamar.

D

Obrigado deu certo aqui.

Hebert_Coelho

Vai na página que você quer colocar o dialog e coloca:<ui:include src="SEU_DIALOG"/>

V

Cara, você pode me dar o exemplo tanto do xhtml do dialog, quanto do que chama ele ? Obrigado

Hebert_Coelho

http://www.primefaces.org/showcase/ui/dialog.jsf

V

Esse showCase ja tinha visto, mas queria ver na hora da chamada… queria ver o xhtml que tem o dialog e o xhtml que contem um botao que chama o dialog, ja pesquisei pra caramba e nada =(

Hebert_Coelho

Cara, você queria ver o código do botão? É esse: <p:commandButton id="basic" value="Basic" onclick="dlg1.show();" type="button" />

Criar o código da dialog na página? É esse:<p:dialog id="basicDialog" header="Basic Dialog" widgetVar="dlg1"> <h:outputText value="Resistance to PrimeFaces is futile!" /> </p:dialog> O Link de onde eu tirei esses códigos? É esse: http://www.primefaces.org/showcase/ui/dialog.jsf

V

Isso eu sei, queria saber como abro um dialog de outra pagina xhtml eu ja ouvir ffalar que é com ui include e tals mas nao sei como é exatamente. Como o criador do topico conseguiu eu pensei que voces pudeasem ajudar postando o codo dos dos xhtml. Um que contem o dialog e outro que chama ele. Ps: desculpe os erros de portugues é que tou oostando do celilar e do onibus rs

M

opa amigo, você conseguil?

poderia mostrar o codigo da pagina que contem o dialog e a pagina que vc chama o dialog, de maneira que mostre tanto o include quanto a dialog.show() ?

E

também preciso disso, se conseguiu pode compartilhar ??

Valeu

M

opa, consegui sim, suponha que vc tem uma pagina chamada addAluno.xhtml onde nela possui seu

<p:dialog ...  widgetvar="alunoDlg"...>

agora suponha que vc criou uma index.xhtml, nessa pagina vc precisa fazer o seguinte:

<body>
   <ui:include src="addAluno.xhtml"> 
     //vc  é incluir a pagina que possui o dlg e chamar o dlg, OBS: suponha que as paginas estão no mesmo local. caso contrario, em pastas diferentes, coloque as devidas pastas ex: /pasta/pagina.xhtml...
    // aqui vc pode chamar atraves de sua criatividade o alunoDlg.show();
    <h:commandButton action="alunoDlg.show()" value="Chamar" />
.
.
.

espero que tenha ajudado e não complicado.

L

Tbem estou com o mesmo problema ai eu consegui so que nao estou conseguindo fazer uma datatable funcionar, tpw fiz um manageBean
para atualizar a pagina criando objeto a lista queria saber como faço… N consigo listar nd =(

Ele abre normal o Dialog so nao lista

@SessionScoped

	public void update() {
		this.negocio = new Negocio();
		this.selectedCadCli = new CadCli();
		this.selectedCiCadUsr = new CiCadUsr();
		this.selectedCiCadSol = new CiCadSol();
		this.ciCadSol = new CiCadSol();
		this.listCiCadSolArq = new ArrayList<CiCadSolArq>();
		this.listCiCadSolArqImg = new ArrayList<CiCadSolArq>();
		this.listCiCadSolArq02 = new ArrayList<CiCadSolArq>();
		this.listCiCadSolArqImg02 = new ArrayList<CiCadSolArq>();
		this.ciCadSolEvento = new CiCadsolEvento();
		this.listCadCli = new CadCliDao().findAll("CadCli", "cRazao");
		this.listCiCadUsr = new CiCadUsrDao().findAll("CiCadUsr", "ciUsrNomFunc");
		this.listCiCadSol = new CiCadSolDao().findAll();
		this.lazyCiCadSol = new LazyCiCadSolDataModel(listCiCadSol);
		this.consultaCicadSol = new ConsultaCiCadSol();
		this.setEnableDisabledButton(0);
		this.setEnableDisnableInpuText(true);
		this.setTabIndex(0);
	}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html 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:p="http://primefaces.org/ui">
<h:body>
		<h:form id="f">
			<p:growl id="messages" autoUpdate="true" showDetail="true"
				sticky="false" life="3000" />

			<p:dialog id="dlg2" header="Atendimento" widgetVar="dlg2"
				resizable="false" modal="true">
						<p:dataTable id="dataTable" var="cicadsol"
						value="#{atendBean.lazyCiCadSol}" paginator="true" rows="5"
						paginatorTemplate="{FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}"
						selectionMode="single" selection="#{atendBean.selectedCiCadSol}" lazy="true" rowKey="#{cicadsol.ciSolCodSol}">
						
						<p:column id="processo" style="text-align: center;">
							<f:facet name="header">
								<h:outputText value="Processo" />
							</f:facet>
							<h:outputText value="#{cicadsol.ciSolCodSol}" />
						</p:column>
						</p:dataTable>
			</p:dialog>
		</h:form>
</h:body>
</html>
M

veja o escopo do seu bean, qual é?

L

@SessionScoped Mano!

M

se poder colocar tanto o bean quanto a pagina ficaria melhor de analisar.

L

Vc tem Email ai te mando tudo vc da uma olhada melhor!

M

o correto é que você poste aqui, pois caso eu não saiba, alguém possa ajudar também.

se for muito grande cole no gist ae e mostre o link

Criado 5 de fevereiro de 2012
Ultima resposta 30 de jan. de 2014
Respostas 17
Participantes 6