Problemas Richfaces [Desesperado!]

14 respostas
barcellosrod

Pessoal, estou dando murro em ponta de faca a quase duas semanas e estou quase desistindo de usar este incrível framework com facelets, porém não sei se é problema de configuração dele ou do facelets...

Sempre que tento utilizar um componente tipo modelpanel, togglespanel me gera um erro de javascript na tela, segue exemplo

Detalhes dos erros da página da Web

Agente de Usuário: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET4.0C; .NET4.0E)
Carimbo de data/hora: Tue, 13 Apr 2010 12:21:09 UTC


Mensagem: O objeto não  suporte para a propriedade ou método
Linha: 55
Caractere: 399
Código: 0
URI: http://localhost:8080/Teste/a4j/g/3_3_3.CR1org.ajax4jsf.javascript.PrototypeScript.jsf


Mensagem: 'this.panels.get(...)' é nulo ou não é um objeto
Linha: 16
Caractere: 65
Código: 0
URI: http://localhost:8080/Teste/a4j/g/3_3_3.CR1scripts/simpleTogglePanel.js.jsf

Sendo que o mesmo erro ocorre com outros componentes...
O Estranho é que estou utilizando outros componentes rich como panelgride outros na mesma página, dentro destes containers e os mesmos funciona normalmente, porem os containers nao funcionam...

Por favor, ja estou no desespero e nao sei mais o que fazer, se alguem tiver alguma ideia, por mais simples que seja to aceitando... Segue fonte para análise... Página
<?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:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:t="http://myfaces.apache.org/tomahawk"
      xmlns:rich="http://richfaces.org/rich">
	<body>	
		<ui:composition template="/templates/maintemplate.xhtml">	
			<ui:define name="content">
				<h:form id="main">															
					<t:panelGrid columns="1" style="text-align:center;">
						<rich:panel style=" width : 250px;" headerClass="header" bodyClass="corpo">
							<f:facet name="header">
								<h:outputText value="Grupos de Veículos" />
							</f:facet>					
								<t:saveState value="#{vehicleGroupBean.group}"></t:saveState>								
								<t:panelGrid columns="1" style="text-align:left;">							
									<h:outputText id="lblempresa" value="Empresa (matrizes)" styleClass="label"/>						
									<h:selectOneMenu id="cmbempresa" value="#{vehicleGroupBean.group.branchId}" styleClass="campo_obrigatorio_200">     	<f:selectItem itemValue="-1" itemLabel="Selecione um item"/>
							        	<f:selectItems value="#{vehicleGroupBean.comboCustomers}"/>   </h:selectOneMenu	>					   
									<h:outputText id="lblgrupos" value="Grupos" styleClass="label"/>						
									<h:selectOneMenu id="cmbgroup" value="#{vehicleGroupBean.group.groupId}" styleClass="campo_obrigatorio_200">
						        		<f:selectItem itemValue="-1" itemLabel="Selecione um item"/>
						        		<f:selectItems value="#{vehicleGroupBean.groups}"/>									        	
						        	</h:selectOneMenu>
						        	<h:outputLink value="#" id="link">
								        <h:outputText value="Grupo não existe? Cadastre-o agora." />
								        <rich:componentControl for="panel" attachTo="link" operation="show" event="onclick"/>
								    </h:outputLink>
						        </t:panelGrid>					
						</rich:panel>												
					</t:panelGrid>	
				</h:form>						
			        
		        <h:form id="modal">
			        <rich:simpleTogglePanel switchType="client" label="Add AJAX capability to existing JSF applications">
	               		<t:panelGrid columns="1" style="text-align:left;">						
							<h:outputText id="lblempresa" value="Empresa (matrizes)" styleClass="label"/>						
							<h:selectOneMenu id="cmbempresa2" value="#{groupBean.group.branchId}" styleClass="campo_obrigatorio_200">
					        	<f:selectItem itemValue="-1" itemLabel="Selecione um item"/>
					        	<f:selectItems value="#{groupBean.comboCustomers}"/>
					        </h:selectOneMenu>					   
							<h:outputText id="lblgrupo" value="Grupo" styleClass="label"/>						
							<h:inputText id="txtgroup" value="#{groupBean.group.groupName}" styleClass="campo_obrigatorio_190"/>
                                                        <h:outputText id="lblcores" value="Cores" styleClass="label"/>					
							<h:selectOneMenu id="cmbcolours" value="#{groupBean.group.colour.id}" styleClass="campo_obrigatorio_200">
					        	<f:selectItem itemValue="-1" itemLabel="Selecione uma cor" />
					        	<f:selectItems value="#{groupBean.comboColours}"/>
					        </h:selectOneMenu>		
					        <h:outputText value=" " />						<t:panelGroup colspan="1" style="text-align:right;">	  
				                <h:commandButton value="Cancelar" action="#{groupBean.cancelInsertGroup}"/>                    
				                <h:commandButton value="Salvar" action="#{groupBean.insertGroup}" id="command">
				                	<rich:componentControl for="panel" attachTo="link" operation="command" event="onclick"/>
				                </h:commandButton>
			                </t:panelGroup>		                
						</t:panelGrid>
	    			</rich:simpleTogglePanel> 
				</h:form>		   					 				      				
			</ui:define>   					
		</ui:composition>				                                                  								 				
	</body>
</html>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app 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">
    <context-param>
      <param-name>com.sun.faces.verifyObjects</param-name>
      <param-value>true</param-value>
    </context-param>
    <context-param>
      <param-name>com.sun.faces.validateXml</param-name>
      <param-value>true</param-value>
    </context-param>
    <context-param>
      <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
      <param-value>.xhtml</param-value>
    </context-param>
    <context-param>
      <param-name>facelets.DEVELOPMENT</param-name>
      <param-value>true</param-value>
    </context-param>
    <context-param>
      <param-name>facelets.SKIP_COMMENTS</param-name>
      <param-value>true</param-value>
    </context-param>
    <context-param>
      <param-name>org.richfaces.SKIN</param-name>
      <param-value>classic</param-value>
    </context-param>
    <context-param>
      <param-name>org.ajax4jsf.VIEW_HANDLERS</param-name> 
      <param-value>com.sun.facelets.FaceletViewHandler</param-value> 
    </context-param>
    <filter>
      <display-name>RichFaces Filter</display-name>
      <filter-name>richfaces</filter-name>
      <filter-class>org.ajax4jsf.Filter</filter-class>
    </filter>
    <filter-mapping>
      <filter-name>richfaces</filter-name>
      <servlet-name>Faces Servlet</servlet-name>
      <dispatcher>REQUEST</dispatcher>
      <dispatcher>FORWARD</dispatcher>
      <dispatcher>INCLUDE</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-list>
</web-app>
template
<?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:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:t="http://myfaces.apache.org/tomahawk"
      xmlns:a4j="http://richfaces.org/a4j">      
	<head>	
		<a4j:loadStyle src="/css/generic.css"/>
	</head>
	<body>
		<ui:debug/>
		<div id="header">
			<ui:insert name="header">
				Inserir Novo Cabeçalho
			</ui:insert>	
		</div>
		<div id="menu">
			<ui:insert name="menu">
				<ui:include src="../pages/menu.xhtml" />
			</ui:insert>
		</div>	
		<div id="content">			
				<ui:insert name="content">
					Inserir Novo Corpo
				</ui:insert>			
		</div>	
		<div id="footer">
			<ui:insert name="footer">
				 Inserir Novo Rodapé
			</ui:insert>
		</div>
	</body>		
</html>

Fico no aguardo e obrigado....

14 Respostas

M4N03L50N

Cara… faz algum tempo que não trampo com richfaces… mas parece estar faltando a tag <f:view>, saca?

Essa tag deve envolver tudo dentro do corpo, exemplo:

<body>
<f:view>
 
CONTEUDO

</f:view>
</body>

Tenta aí.

Abraço!

R

Amigo, faz um teste básico ai só pra comprovar minha teoria… tenta usar esse código tirando o tomahawk.
Isso aconteceu comigo… quando eu importava o tomahawk e utiliza junto com o richfaces ele dava problema de compatibilidade e bugava tudo que eu fazia em richfaces.

Faz esse teste tirando o tomahawk e me diz o resultado.

Abraços

R

Você pode usar o h:panelGrid ao invés do t:

barcellosrod

Amigo, parece que utilizando facelets não é necessário declarar a tag view, porém testei mesmo assim e continua não rolando…
Obrigado por enquanto e fico no aguardo de mais sugestões…

M4N03L50N

Certo…

Faz o seguinte então cara: faz uma página o mais simples possível, tipo um Hello World, mas usando o modal ou toggle…

Aí se não rolar, é alguma configuração errada.
Se rolar, vai adicionando o restante das coisas até chegar no ponto que está causando o erro…

É um método trabalhoso, mas como vc disse que já está há 2 semanas nisso, compensa fazer.

E quando conseguir, não se esqueça de postar o que era, pode ajudar muita gente…

Abraço!

barcellosrod

Fiz o teste retirando o tomahawnk não rolou do mesmo jeito, porém o erro javascritp mudou… Segue…

Detalhes dos erros da página da Web

Agente de Usuário: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET4.0C; .NET4.0E)
Carimbo de data/hora: Tue, 13 Apr 2010 13:49:24 UTC


Mensagem: O objeto não  suporte para a propriedade ou método
Linha: 55
Caractere: 399
Código: 0
URI: http://localhost:8080/Teste/a4j/g/3_3_3.CR1org.ajax4jsf.javascript.PrototypeScript.jsf

Com relação ao exemplo, se eu retirar a chamada que faz uso do template, composition, define, meu layout fico todo bugado mas o componente funciona… Segue exemplo

<?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:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core" 
      xmlns:a4j="http://richfaces.org/a4j"    
      xmlns:rich="http://richfaces.org/rich">
	
			<h:form id="main">															
				<h:panelGrid columns="1" style="text-align:center;">
					<rich:panel style=" width : 250px;" headerClass="header" bodyClass="corpo">
						<f:facet name="header">
							<h:outputText value="Grupos de Veículos" />
						</f:facet>																			
							<h:panelGrid columns="1" style="text-align:left;">							
								<h:outputText id="lblempresa" value="Empresa (matrizes)" styleClass="label"/>						
								<h:selectOneMenu id="cmbempresa" value="#{vehicleGroupBean.group.branchId}" styleClass="campo_obrigatorio_200">
						        	<f:selectItem itemValue="-1" itemLabel="Selecione um item"/>
						        	<f:selectItems value="#{vehicleGroupBean.comboCustomers}"/>									        						        		
						        </h:selectOneMenu>						   
								<h:outputText id="lblgrupos" value="Grupos" styleClass="label"/>						
								<h:selectOneMenu id="cmbgroup" value="#{vehicleGroupBean.group.groupId}" styleClass="campo_obrigatorio_200">
					        		<f:selectItem itemValue="-1" itemLabel="Selecione um item"/>
					        		<f:selectItems value="#{vehicleGroupBean.groups}"/>									        	
					        	</h:selectOneMenu>
					        	<h:outputLink value="#" id="link">
							        <h:outputText value="Grupo não existe? Cadastre-o agora." />
							        <rich:componentControl for="panel" attachTo="link" operation="show" event="onclick"/>
							    </h:outputLink>
					        </h:panelGrid>					
					</rich:panel>												
				</h:panelGrid>	
			</h:form>						
		        
	        <h:form id="modal">
		        <rich:simpleTogglePanel switchType="client" label="Add AJAX capability to existing JSF applications">
               		<h:panelGrid columns="1" style="text-align:left;">						
						<h:outputText id="lblempresa" value="Empresa (matrizes)" styleClass="label"/>						
						<h:selectOneMenu id="cmbempresa2" value="#{groupBean.group.branchId}" styleClass="campo_obrigatorio_200">
				        	<f:selectItem itemValue="-1" itemLabel="Selecione um item"/>
				        	<f:selectItems value="#{groupBean.comboCustomers}"/>									        						        									        
				        </h:selectOneMenu>					   
						<h:outputText id="lblgrupo" value="Grupo" styleClass="label"/>						
						<h:inputText id="txtgroup" value="#{groupBean.group.groupName}" styleClass="campo_obrigatorio_190"/>			        						       
						<h:outputText id="lblcores" value="Cores" styleClass="label"/>					
						<h:selectOneMenu id="cmbcolours" value="#{groupBean.group.colour.id}" styleClass="campo_obrigatorio_200">
				        	<f:selectItem itemValue="-1" itemLabel="Selecione uma cor" />
				        	<f:selectItems value="#{groupBean.comboColours}"/>									        					        										        
				        </h:selectOneMenu>		
				        <h:outputText value=" " />			 													    							     
						<h:panelGroup colspan="1" style="text-align:right;">	  
			                <h:commandButton value="Cancelar" action="#{groupBean.cancelInsertGroup}"/>                    
			                <h:commandButton value="Salvar" action="#{groupBean.insertGroup}" id="command">
			                	<rich:componentControl for="panel" attachTo="link" operation="command" event="onclick"/>
			                </h:commandButton>
		                </h:panelGroup>		                
					</h:panelGrid>
    			</rich:simpleTogglePanel> 
			</h:form>		   					 				      				
					                                                  								 			
</html>

Fico no aguardo e obrrigado pela ajuda pessoal…

R

Então… continuando os meus argumentos, já que você tirando o template, composition e tal funciona, talvez em algum dos templates que você usa você esteja usando o tomahawk.
Se puder coloque o codigo dos seus templates…
Tenta tirar o tomahawk dos templates(caso esteja usando) e poste o resultado.

Abraços

thiago.correa

Cara dá uma olhada nas libs, tipo veja se as libs que você está usando são compatíveis! Ou pode ser que ocorreu um bugfix, eu não tenho utilizado mais a implementação da Apache do myfaces, tenta usar a da Sun

R

Ah detalhe importante… tenta tirar a lib do tomahawk da pasta de libs também, no meu caso eu precisei fazer isso para funcionar perfeitamente.

barcellosrod

E ae galera;

Fiz o que pediram, retirei o jar do tomahawk e as referencias dele nas páginas, mas mesmo assim continua não funcionando :frowning:
Ele mostra o componente na tela, porém o mesmo não tem nenhum tipo de ação.
Já utilizei versões diferentes da biblioteca e acontece o mesmo erro. Segue Erro:

Detalhes dos erros da página da Web

Agente de Usuário: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET4.0C; .NET4.0E)
Carimbo de data/hora: Tue, 13 Apr 2010 15:51:27 UTC


Mensagem: O objeto não  suporte para a propriedade ou método
Linha: 55
Caractere: 399
Código: 0
URI: http://localhost:8080/Teste/a4j/g/3_3_3.CR1org.ajax4jsf.javascript.PrototypeScript.jsf


Mensagem: 'this.panels.get(...)' é nulo ou não é um objeto
Linha: 16
Caractere: 65
Código: 0
URI: http://localhost:8080Teste/a4j/g/3_3_3.CR1scripts/simpleTogglePanel.js.jsf


Mensagem: 'this.panels.get(...)' é nulo ou não é um objeto
Linha: 16
Caractere: 65
Código: 0
URI: http://localhost:8080/Teste/a4j/g/3_3_3.CR1scripts/simpleTogglePanel.js.jsf


Mensagem: 'this.panels.get(...)' é nulo ou não é um objeto
Linha: 16
Caractere: 65
Código: 0
URI: http://localhost:8080/Teste/a4j/g/3_3_3.CR1scripts/simpleTogglePanel.js.jsf


Mensagem: 'this.panels.get(...)' é nulo ou não é um objeto
Linha: 16
Caractere: 65
Código: 0
URI: http://localhost:8080/Teste/a4j/g/3_3_3.CR1scripts/simpleTogglePanel.js.jsf


Mensagem: 'this.panels.get(...)' é nulo ou não é um objeto
Linha: 16
Caractere: 65
Código: 0
URI: http://localhost:8080/Teste/a4j/g/3_3_3.CR1scripts/simpleTogglePanel.js.jsf

Por enquanto obrigado…
Conto com a ajuda de vcs para resolver esse problema…

R

Já tentou utilizar ele em outro navegar tirando o mozilla?

R

<rich:simpleTogglePanel switchType=“client” label=“Add AJAX capability to existing JSF applications”>

Não se esqueça de colocar nessa tag aqui id=“panel” para que ela possa ser encontrada pela tag

<rich:componentControl for=“panel” attachTo=“link” operation=“show” event=“onclick”/>

onde você utilizou o “for=panel”

barcellosrod

Desculpa esse código era de quando estava testando como modalpanel, pq quando salvava ja fechava o modal…
Para o toogle pode desconsiderar. Da mesma forma continua sem funcionar…

murilo_scool

Olá Srs,

já tive esse mesmo problema e estou passando para deixar uma solução que funcionou para mim!

Para evitar que diferentes lib jQuery deêm conflitos entre seus componentes
é aconselhável utilizar um recurso do próproio jQuery para eliminar tal problema:

jQuery.noConflict()
Documentação: http://api.jquery.com/jQuery.noConflict

para resolver o meu problema fiz o seguinte:

coloquei esse código em um local que quando for chamado, as lib já foram carregadas
dessa forma, os possíveis conflitos não serão mais problemas, permitindo o funcionamento correto dos componentes!

Bom é isso ai, espero ter ajudado!

Abraços

“Disse-lhe Jesus: Eu sou o caminho, e a verdade e a vida; ninguém vem ao Pai, senão por mim.” João 14:6

Criado 13 de abril de 2010
Ultima resposta 23 de mai. de 2011
Respostas 14
Participantes 5