JSF - Duvida

6 respostas
L

Galera, vou postar aqui as partes do meu projeto pra ver se alguém pode me ajudar.

Se trata de um projeto jsf, em que eu tenho o xml e preciso carrega-lo para depois passar para objetos do componente Tree2 do myFaces.

Por enqto não consegui nem carregar o xml.

Aqui está a minha pagina inicio.jsp, em que eu pego o caminho do meu xml.

<html>   
   <head>   
      <meta http-equiv="Content-Type" content="text/html; charset=Cp1252"/>   
      <title>Login</title>   
   </head>   
   <body>   
      <f:view>   
         <h:form>Digite o caminho do xml:   
         <h:inputText value="#{CatalogoBean.nomeXml}"></h:inputText>   
         <br><br>   
         <h:commandButton value="Visualizar" action="#{CatalogoBean.visualizar}"></h:commandButton>   
         </h:form>   
      </f:view>   
   </body>   
</html>

Agora eu tenho minha classe com o metodo visualizar, que chama outra pagina (sucesso.jsp).

public class CatalogoBean{   
      
   private String nome;   
   private String tipo;   
   private String nomeXml;   
   
  public CatalogoBean(){   
      
   }   
    
         
    public String getNome(){   
         return nome;   
      }   
         
    public String getTipo(){   
         return tipo;   
      }   
       
    public void setNome(String paramNome){   
         nome = paramNome;   
      }   
       
    public void setTipo(String paramTipo){   
         tipo = paramTipo;   
      }   
      
   public String getNomeXml(){   
         return this.nomeXml;   
      }   
      
   public void setNomeXml(String paramNomeXml){   
         this.nomeXml = paramNomeXml;   
      }   
         
   public String visualizar(){   
         
      File hbXmlFile = new File("nomeXml");   
      hBuster.buster(hbXmlFile);   
         
      String resultado = "false";   
      if(nomeXml!=null){   
         resultado = "sucesso";   
            
         System.out.println("\n"+nomeXml);   
         System.out.println("\n"+hbXmlFile);   
      }   
      System.out.println("\n"+hBuster);   
      System.out.println("\n"+resultado);   
      return resultado;   
   }   
      
      
public void buster (File f) {   
         
         
      CatalogoSistemaDocument pod = null;   
      try{   
         pod = CatalogoSistemaDocument.Factory.parse(f);   
      }catch(XmlException e){   
         e.printStackTrace();   
      }catch(IOException e){   
         e.printStackTrace();   
      }   
}

Aqui está meu faces-config.xml

<faces-config>
  <managed-bean>
     <managed-bean-name>CatalogoBean</managed-bean-name>
     <managed-bean-class>bean.CatalogoBean</managed-bean-class>
     <managed-bean-scope>session</managed-bean-scope>
  </managed-bean>

  <navigatin-rule>
    <from-view-id>/pages/inicio.jsp</from-view-id>
    <navigation-case>
      <from-outcome>sucesso</ <from-outcome>
      <to-view-id>/pages/sucesso.jsp</to-view-id>
    </navigation-case>
  </navigatin-rule>
</faces-config>

O problema é que quando eu executo aparece a seguinte mensagem:

javax.servlet.ServletException: Cannot get value for expression ‘#{CatalogoBean.nomeXml}’

E quando eu executo sem o método “buster” (que faz o parse) não dá erro e a página sucesso.jsp abre.

Alguém entendeu?? Pode me ajudar? É urgentissimo!!
Obrigada.

6 Respostas

casmeiron

Bom, tem algo estranho no seu código.
Você disse que quando não executa o método “buster” não da erro, isso quer dizer, o faces conseguiu executar a EL #{CatalogoBean.nomeXml} e quando tem o buster da erro na EL?

Não faz sentido… e outra, você tem o mesmo backing-bean com dois nomes? Por que você faz:

#{LibraryTreeHandler.visualizar}

ao inves de:

#{CatalogoBean.visualizar}

Se realmente sem o método “buster” o negocio funciona, então o erro é em outro lugar.

L

Desculpe, eu que postei errado. O correto é CatalogoBean.visualizar mesmo. Ignore o LibraryTree…

Pois é, por isso que não sei onde é o erro. Sem o método buster, não dá erro. A página seguinte abre normalmente. O erro deve ser neste método então. Mas não sei qual. Este método, em outro projeto separado roda, faz o parse do xml e tal.

L

No log do Tomcat aparece o erro:

Exception while invoking expression ‘#{CatalogoBean.visualizar}’

casmeiron

Coloque todo o seu código que está dentro do método visualizar em um:

try {

} catch(Throwable e) {
   // inspect exception
}

Isso pode ajudar, abraços.

L

Você sabe como utilizar o XmlBeans em um projeto web?? Talvez isto é que esteja dando erro.

L

Mudei um pouco o codigo. Fiz assim:

Página inicio.jsp:

<%@ page contentType="text/html; charset=Cp1252" %>   
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>   
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>   
<%@ taglib uri="http://myfaces.apache.org/tomahawk" prefix="t" %>   
  
<html>   
   <head>   
      <meta http-equiv="Content-Type" content="text/html; charset=Cp1252"/>   
      <title>Login</title>   
   </head>   
   <body>   
      <f:view>   
         <h:form>Digite o caminho do xml:   
         
         <br><br>   
         <h:commandButton value="Visualizar" action="#{CatalogoBean.visualizar}"></h:commandButton>   
         </h:form>   
      </f:view>   
   </body>   
</html>

Método visualizar:

public String visualizar(){
		String resultado = "false";
		try{
		File hbXmlFile = new File("C://xmlCatalogo//DITR.xml");
		CatalogoBean a = new CatalogoBean();
		a.createH(hbXmlFile);
		}	catch(Throwable e) {
		    // inspect exception
		 }

		return resultado;
	}

Método CatalogoSistema Document

public CatalogoSistemaDocument createH(File f){
CatalogoSistemaDocument newHDoc =null;
		try{
		 newHDoc = CatalogoSistemaDocument.Factory.parse(f);
	}catch(XmlException e){
		e.printStackTrace();
	}catch(IOException e){
		e.printStackTrace();
	}
 System.out.println(newHDoc.toString());
	   return newHDoc;
	
	}

O erro que está aparecendo agora:

2007-01-25 10:38:58 StandardWrapperValve[Faces Servlet]: Servlet.service() for servlet Faces Servlet threw exception
javax.faces.FacesException: Error calling action method of component with id _idJsp0:_idJsp1
	at org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:74)
	at javax.faces.component.UICommand.broadcast(UICommand.java:106)
	at javax.faces.component.UIViewRoot._broadcastForPhase(UIViewRoot.java:94)
	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:168)
	at org.apache.myfaces.lifecycle.LifecycleImpl.invokeApplication(LifecycleImpl.java:343)
	at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:86)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:137)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
	at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:144)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
	at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
	at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
	at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
	at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
	at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
	at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
	at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
	at java.lang.Thread.run(Thread.java:534)
Caused by: javax.faces.el.EvaluationException: Exception while invoking expression #{LibraryTreeHandler.visualizar}
	at org.apache.myfaces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:165)
	at org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:63)
	... 33 more
Caused by: javax.faces.FacesException: java.lang.NoClassDefFoundError: org/apache/xmlbeans/XmlException
	at org.apache.myfaces.shared_impl.util.ClassUtils.newInstance(ClassUtils.java:279)
	at org.apache.myfaces.shared_impl.util.ClassUtils.newInstance(ClassUtils.java:265)
	at org.apache.myfaces.config.ManagedBeanBuilder.buildManagedBean(ManagedBeanBuilder.java:50)
	at org.apache.myfaces.el.VariableResolverImpl.resolveVariable(VariableResolverImpl.java:311)
	at org.apache.myfaces.config.LastVariableResolverInChain.resolveVariable(LastVariableResolverInChain.java:42)
	at org.apache.myfaces.el.ValueBindingImpl$ELVariableResolver.resolveVariable(ValueBindingImpl.java:574)
	at org.apache.commons.el.NamedValue.evaluate(NamedValue.java:124)
	at org.apache.myfaces.el.ValueBindingImpl.resolveToBaseAndProperty(ValueBindingImpl.java:455)
	at org.apache.myfaces.el.MethodBindingImpl.resolveToBaseAndProperty(MethodBindingImpl.java:180)
	at org.apache.myfaces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:114)
	... 34 more
Caused by: java.lang.NoClassDefFoundError: org/apache/xmlbeans/XmlException
	at java.lang.Class.getDeclaredConstructors0(Native Method)
	at java.lang.Class.privateGetDeclaredConstructors(Class.java:1618)
	at java.lang.Class.getConstructor0(Class.java:1930)
	at java.lang.Class.newInstance0(Class.java:278)
	at java.lang.Class.newInstance(Class.java:261)
	at org.apache.myfaces.shared_impl.util.ClassUtils.newInstance(ClassUtils.java:274)
	... 43 more

Estou enviando em anexo o meu xmltypes.jar

Por favor, alguém pode me ajudar??

neste link tem um artigo de como utilizar o XmlBeans em projeto web.
http://www-128.ibm.com/developerworks/webservices/library/os-ag-soa/

Não sei o que estou fazendo de errado.

Criado 22 de janeiro de 2007
Ultima resposta 25 de jan. de 2007
Respostas 6
Participantes 2