primefaces dialog frameword , 2 dialog
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]
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
Curtidas 0
Respostas
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?
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
10/06/2014
Já tentei fazer isso, mas infelizmente não obtive sucesso!!
GOSTEI 0
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
10/06/2014
Alguém?
GOSTEI 0
Deivison Melo
10/06/2014
Ninguém ainda?
GOSTEI 0
Deivison Melo
10/06/2014
Alguém?
GOSTEI 0
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
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?
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
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!
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
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>
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! :)
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
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!!
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