primefaces dialog frameword , 2 dialog

Java

10/06/2014

olá pessoal , estou encontrando problema ao utilizar o dialog framework do primefaces, não estou usando o <p:dialog e sim uma bean com um método RequestContext.getCurrentInstance().openDialog("meudialog"), o mesmo abre normalmente , porém se eu chamar outro dialogo de dentro do primeiro dialogo , o segundo fica dentro da janela do primeiro, teria como deixa-lo de fora da janela? .

obs: estou usando o primefaces 5.0 e o jsf 2.2.6


[img]http://arquivo.devmedia.com.br/forum/imagem/243128-20140610-180305.jpg[/img]
Deivison Melo

Deivison Melo

Curtidas 0

Respostas

Diogo Souza

Diogo Souza

10/06/2014

Opa Deivison,

Existe a propriedade position que acredito não funcionar muito para o seu caso...

Já considerou abrir um e fechar o outro e vice versa?
GOSTEI 0
Deivison Melo

Deivison Melo

10/06/2014

Já tentei fazer isso, mas infelizmente não obtive sucesso!!
GOSTEI 0
Deivison Melo

Deivison Melo

10/06/2014

Segue meu código abaixo:

package br.com.teste.bean;

import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

import org.primefaces.context.RequestContext;

@ManagedBean(name = "dialog")
@SessionScoped
public class Dialog implements Serializable  {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = -4944774476384986097L;

	/**metodo usado para chamar o dialogo
	 * 
	 * @param val   true - abrir o dialogo , false - fechar
	 * @param tela  - nome do xhtml
	 * @param layout - layout do dialogo
	 */
	public void dialogo(boolean val , String tela , int layout){		
		try {
			if(val){
				RequestContext.getCurrentInstance().openDialog(tela , tamanho(layout) , null);	
			}else{
				RequestContext.getCurrentInstance().closeDialog(tela);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}
	
	
	private Map<String , Object> tamanho(int cod){
		
		Map<String , Object> option = new HashMap<String, Object>();
		if(cod==1){			
			
			option.put("modal", true);
		}else if (cod==2){
			option.put("modal", true);
		}
		
		return option;
		
	}

}

GOSTEI 0
Deivison Melo

Deivison Melo

10/06/2014

Alguém?
GOSTEI 0
Deivison Melo

Deivison Melo

10/06/2014

Ninguém ainda?
GOSTEI 0
Deivison Melo

Deivison Melo

10/06/2014

Alguém?
GOSTEI 0
Rafael Lazzari

Rafael Lazzari

10/06/2014

Galera se alguém souber da uma ajuda ai... também estou com o mesmo problema do Deivison...
GOSTEI 0
Diogo Souza

Diogo Souza

10/06/2014

Opa Deivison,

Talvez possamos agir sobre o CSS dos componentes... Poderia inspecionar os elementos que ele gera e postar o HTML e CSS dos dialogs pra ver se a gente consegue mudar?
GOSTEI 0
Deivison Melo

Deivison Melo

10/06/2014

Bom dia Diego,

Segue código fonte da minha aplicação, na verdade fiz um exemplo bem simples para que tenha um melhor entendimento.

Quando abrir, por favor, abra a tela do botão 1 e da tela que for aberta chame a tela 2 (mesma tela chamada do botao2, também colocado na tela).

Vc perceberá que a tela fica dentro da area da outra e não permite ser arrastada para fora.

[url]https://rapidshare.com/share/322A75EE8B3F60A62D7A131432F9BC3C[/url]

Agradeço a todos pela ajuda!

Abração!
GOSTEI 0
Diogo Souza

Diogo Souza

10/06/2014

Opa Deivison,

Então, como não temos recursos pelo próprio Primefaces pra configurar isso, façamos na mão mesmo.

O Primefaces disponibiliza o jQuery por padrão, então podemos usar os recursos dele pra facilitar. Você só precisa buscar o elemento iframe que compõe esse panel, após ele ser carregado na página, e setar sua largura para um tamanho menor, aí ele adapta.

Faz assim, na sua página "tela2.html", acrescenta o código abaixo logo após o fechamento da tag </h:form>

<script type="text/javascript">
		 	$(document).ready(function() {
		 		$('iframe', parent.document).css('width', '490px');
		 	});
		 </script>


O código será executado assim que a tela 2 abrir pela função ready(). Logo após, recuperamos o iframe que está fora da página atual (por isso precisamos do parent.document) e setamos o valor da largura! Testa e avisa se deu certo! :)
GOSTEI 0
Deivison Melo

Deivison Melo

10/06/2014

Diogo,

Gostaria de agradecer desde já pelo código!!

Depois de inserir o código, Quando abrimos a tela 2 através da tela 1, o contexto não está funcionando, ou seja, coloquei um botão fechar e não consigo fechar a tela com ele...

Na verdade ele está se "perdendo".

Abração e bons códigos!!
GOSTEI 0
POSTAR