Problema com o componente do RichFaces ModalPanel no Firefox 3.0.7

Viva,

Estou a desenvolver uma aplicação web no IDE Eclipse e estou a usar Jboss + jboss Seam + hibernate.

Entretanto coloquei um modalPanel, do richFaces, com uma mensagem de confirmação para o utilizador e funciona perfeito no IE7 no entanto no firefox o modalPanel é renderizado durante 1 ou 2 segundos e desaparece sem que o utilizador tenha tempo de efectuar qualquer operação.

Aqui vai o código do modalPanel

 <rich:modalPanel id="panel">
       <f:facet name="header">
        Aviso
        </f:facet>
       
       <h:form id="del">

            <div class="dialog"> 
            <h:outputText value="Atenção!!" style="font-size:medium;font-weight:bold;"/>  
             <br/><br/><br/>   
            <h:outputText value="Se apagar uma casa serão também apagados os inquelinos a ela associados!" />
             <br /><br />
            <h:outputText value="Deseja Continuar a operação" />
            <br /><br /><br /> 
            </div>          

        <div class="actionButtons">
        
        <s:button id="delete"
        			value="Sim"
					action="#{casaHome.remove}"
        			immediate="true"	
        			view="/#{empty casaFrom ? 'Consulta_casas' : casaFrom}.xhtml">
         <rich:componentControl for="panel" attachTo="delete" operation="hide" event="onclick"/>
        </s:button>
             
         <h:commandButton id = "cancelB" value="Cancelar">
         <rich:componentControl for="panel" attachTo="cancelB" operation="hide" event="onclick"/>
         </h:commandButton>
        </div>

    </h:form>
    </rich:modalPanel>

Alguém já passou por uma situação semelhante, ou conhece a razão deste comportamento?

Obrigado pela atenção

Paulo Caeiro

A consola de erros do firefox dá os seguintes avisos:

como voce esta abrindo esse modal panel?
e onde? dentre de um a4j:form com um a4j:commandButton/Link ??

O modal panel é chamado através de um h:commandButton dentro de um h:form.

já tive esse problema por causa do a4j:form
posta o codigo de como vc está abrindo o modalpanel, pois pra mim seu panel esta ok.

aqui vai, é bastante simples

 <h:commandButton id="del1"
                          value="Apagar"                         
                      immediate="true"                      
                       rendered="#{proprietarioHome.managed}">

   		  <rich:componentControl for="panel" attachTo="del1" operation="show" event="onclick"/> 		
  		     		  	
           </h:commandButton>

obrigado pela atenção :smiley:

no firefox 3.0.3 rodando no meu ubuntu 8.10 funcionou perfeito, por isso proponho uma solução alternativa:


<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:rich="http://richfaces.org/rich">
<head>

</head>
<body>


<h:commandButton id="del1" value="Apagar" immediate="true" [b][color=blue]onclick="Richfaces.showModalPanel('panel')"[/color][/b]/>


<rich:modalPanel id="panel">
	<f:facet name="header">  
        Aviso  
        </f:facet>

	<h:form id="del">

		<div class="dialog"><h:outputText value="Atenção!!"
			style="font-size:medium;font-weight:bold;" /> <br />
		<br />
		<br />
		<h:outputText
			value="Se apagar uma casa serão também apagados os inquelinos a ela associados!" />
		<br />
		<br />
		<h:outputText value="Deseja Continuar a operação" /> <br />
		<br />
		<br />
		</div>

		<div class="actionButtons"><h:commandButton id="cancelB"
			value="Cancelar">
			<rich:componentControl for="panel" attachTo="cancelB"
				operation="hide" event="onclick" />
		</h:commandButton></div>

	</h:form>
</rich:modalPanel>
</body>
</html>

e pra fechar pode usar o Richfaces.hideModalPanel(‘panel’) no button do da janela, mas testa com o componentControl pra fechar, pra vê se da pau denovo.

ok dlf,

Muito obrigado pela sua ajuda vou testar hj depois deixo aqui o resultado.

:wink:

:? :? :?

Sabe que ele não reconhece o comando

Richfaces.showModalPanel('panel')

começo a pensar que pode estar relacionado com a configuração do RichFaces no meu projecto ??? talvez no web.xml ??

você pode passar-me o seu web.xml para eu perceber se existe alguma diferença significativa?

muito estranho :?

acho que não seja o xml, tenta limpar o cahce do firefox, executa o clean/build na aplicação, remove o servidor que ta configurado no seu ide e depois adiciona de novo(uso eclipse 3.4 + tomcat 6)

tambem tive esse problema do show/hideModalPanel não funcionar mas era porque eu escrevia RichFaces. ao inves de Richfaces. apesar de que na documentação ta maiusculo, qual versão do Rich tu usas :?: estou usando o 3.2.1 GA.


<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.5"
	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
	<display-name>glima</display-name>
	
	<context-param>
		<param-name>org.ajax4jsf.SKIN</param-name>
		<param-value>blueSky</param-value>
	</context-param>
	<context-param>
		<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
		<param-value>.xhtml</param-value>
	</context-param>
	<filter>
		<filter-name>hibernateFilter</filter-name>
		<filter-class>br.com.sistemaweb.HibernateSessionFilter</filter-class>
		
	</filter>
	<filter>
		<display-name>Ajax4jsf Filter</display-name>
		<filter-name>ajax4jsf</filter-name>
		<filter-class>org.ajax4jsf.Filter</filter-class>
	</filter>
	
	<filter-mapping>
		<filter-name>hibernateFilter</filter-name>	
		<url-pattern>/*</url-pattern>	
	</filter-mapping>
	
	<filter-mapping>
		<filter-name>ajax4jsf</filter-name>
		<servlet-name>Faces Servlet</servlet-name>
		<dispatcher>REQUEST</dispatcher>
		<dispatcher>FORWARD</dispatcher>
		<dispatcher>INCLUDE</dispatcher>
		<dispatcher>ERROR</dispatcher>
	</filter-mapping>
	
	
	<servlet>
		<servlet-name>Faces Servlet</servlet-name>
		<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>
	
	<servlet-mapping>
		<servlet-name>Faces Servlet</servlet-name>
		<url-pattern>*.jsf</url-pattern>
	</servlet-mapping>
	
	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
		<welcome-file>index.htm</welcome-file>
		<welcome-file>index.jsp</welcome-file>
		<welcome-file>default.html</welcome-file>
		<welcome-file>default.htm</welcome-file>
		<welcome-file>default.jsp</welcome-file>
	</welcome-file-list>

</web-app>

eu uso o 3.2.2 GA

mas o teu web.xml está bastante diferente do meu assim que tiver disponibilidade vou ver isto e depois digo qq coisa

DeadLine !!!

Pois é dlf, não consegui solucionar a questão no entanto tenho quase a certeza de que está relacionado com o facto do modalPanel estar a ser definido dentro de um form pois a documentação do richfaces adverte para essa possibilidade.

No entanto estou a atingir o dead line para entrega do projecto por isso acho que vou resolver de outra forma, mais tarde vou voltar para tentar resolver…

Entretanto quero agradecer a tua colaboração para tentar resolver o problema.

Até à proxima… :slight_smile:

Cara, eu também tive este problema há pouco tempo. Minha solução foi trocar:

<h:commandLink/>

por

<a4j:commandLink/>

Para falar a verdade, não tenho certeza se este foi o motivo de funfar, mas, para quem estiver aperriado, acho que vale a pena testar.

[quote=pcaeiro] :? :? :?

Sabe que ele não reconhece o comando

Richfaces.showModalPanel('panel')

começo a pensar que pode estar relacionado com a configuração do RichFaces no meu projecto ??? talvez no web.xml ??

você pode passar-me o seu web.xml para eu perceber se existe alguma diferença significativa?[/quote]

Se ele não reconhece, ppde ser que você tenha se esquecido de passar alguma informação, não? Tenta o código abaixo e vê se funciona.

onclick="#{rich:component('panel')}.show();return false"

se ainda assim não funcionar, dê um id para o form e tente colocar

onclick="#{rich:component('#formId:panel')}.show();return false"