Seguinte pessoal, to tentando chamar uma página jsp num aplicativo jsf q eu to desenvolvendo. Bom, o problema q eu tô tendo é o seguinte: é uma página simples de cadastro de cliente, e preciso q mande as info pro DB. To usando Hibernate pra fazer isso. Mas qdo tento rodar a minha página, dá o seguinte erro:
javax.servlet.ServletException: java.lang.VerifyError: (class: org/apache/jsp/include/formFisica_jsp, method: _jspx_meth_f_005fselectItem_005f9 signature: (Ljavax/servlet/jsp/tagext/JspTag;Ljavax/servlet/jsp/PageContext;)Z) Incompatible argument to function
Isso começou a aparecer depois q eu fiz minhas classes de persistencia. Eu retirei todas as chamadas a essas classes do meu jsp e o erro continua.
Então ouvi dizer q umas libs do hibernate tavam dando erro, e eu baixei as novas, e continua não funfando.
Será q alguem podia me dar uma luz?
Vlw pessoal!!
P.S.: Se precisarem de ver meu codigo, posta aí q eu coloco.
E outra: tem alguem aí q usa o JBoss? To maluco pra saber onde ele salva os logs! Acho q se eu tivesse acesso a eles 50% do meu problema tava resolvido!!! rsrsrs
Você está usando uma JSP junto com um Servlet ou somente a JSP?
Seria interessante postar o código da sua JSP e se possível, o web.xml também (um tempo atrás também tive um problema na utilização de jsp com jsf - talvez eu possa ajudar)…
Antes de mais nada, sinto muito demorar em responder: eu estava travando uma guerra (quase santa) com meu micro!
Bem vamos lá:
Analisei seu código e vi que há muitas tags JSP com algumas JSF. A utilização de JSF implica na não utilização de tags JSP (isso ocorre porque JSF não é tipo “well formed”, como XML, XHTML etc). Isso significa que o correto, seria montar sua página JSF somente com tags específicas de JSF. Obviamente, isso não é possível no mundo real, fora da Matrix ( :lol: ). Mas há duas alternativas permitidas para isso (e uma terceira que você já está usando):
Você pode colocar as tags de JSP, HTML e outras, entre as tags <f:verbatim><f:/verbatim> de JSF. Isso diz ao JSF que trata-se de tags específicas e portanto, não de JSF. A implicação da utilização desta tag é que nem sempre funciona bem (já tentei utilizar divs dentro desta tag e ela não roda direito, pelo menos com o Richfaces). Um exemplo de uma table html ficaria assim:
<f:verbatim>
<table>
<tr>
<td>
Isso é html
</td>
</tr>
</table>
</f:verbatim>
Você pode utilizar páginas JSPX, ou seja, é um tipo de página JSP well formed, com notação de XHTML. Aí sim, liberou geral!! . Abaixo segue um modelo de página JSPX para você utilizar como base:
Você pode misturar as tags sem utilizar a JSPX, porém isso pode te trazer problemas.
Se quiser uma dica, há alguns dias atrás disponibilizei uma aplicação completa em JSF com JPA no site http://www.walkersystems.com.br (você vai precisar do plugin do JavaFX para rodar o site e use o IE). Lá, você pode pegar o projeto do Eclipse pronto e configurado - aí você pode fazer os testes com as JSPX. Inclusive, com o web.xml configurado e comentado com as tags para JSF.
Se eu puder ajudar em mais alguma coisa, pode mandar uma mensagem que agora meu micro está ressucitado!!
Seguinte, tentei fazer com JSPX e a página não tá aceitando os atributos das tags JSF q tem “#”. Tentei colocar “$”, como nos atributos JSP, mas aí não aparece nada, só as table vazias.
O erro q tá dando é esse:
15:59:01,328 INFO [STDOUT] 15:59:01,328 ERROR [[jsp]] Servlet.service() for servlet jsp threw exception
org.apache.jasper.JasperException: /include/formFisica.jsp(25,32) #{..} is not allowed in template text
at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:102)
at org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:711)
at org.apache.jasper.compiler.Node$ELExpression.accept(Node.java:935)
at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2336)
at org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2386)
at org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2392)
at org.apache.jasper.compiler.Node$Root.accept(Node.java:489)
at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2336)
at org.apache.jasper.compiler.Validator.validate(Validator.java:1737)
at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:178)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:306)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:286)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:273)
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:566)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:687)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:469)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:403)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
at com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:408)
at com.sun.faces.application.ViewHandlerImpl.executePageToBuildView(ViewHandlerImpl.java:442)
at com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:115)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:241)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:580)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)
No caso, na linha 25 q tá mostrando no log tem o seguinte cód:
Acho que a exceção pode estar ocorrendo devido a algum mapeamento (que pode estar faltando) no web.xml (outra coisa: renomeie seu arquivo para .jspx mesmo);
As tags JSF ele deveria reconhecer sim com o # - talvez seja pelo mesmo problema do anterior;
Sim - os jsp:outputs são necessários;
Sim - o <f:view> você usa normalmente, dentro do ;
Mas para facilitar sua vida, o “Alevi Polishop” informa que seus problemas acabaram!
Clique neste link http://www.walkersystems.com.br/download/erplive.zip e baixe inteiramente grátis e OpenSource uma aplicação JSF + JPA toda configurada e pronta! E mais: o web.xml está comentado com todas as tags JSF!
Neste projeto também tem uns exemplos de JSPX. Descompacte o arquivo e crie um projeto no Eclipse apontando para o diretório.
Acho que vai te poupar um bom trabalho (nas minhas experiências com JSF, acho que a parte mais chata sempre foi subir a aplicação pela primeira vez).
Aki, brigadão pela ajuda! Eu só comecei a ler o seu post e vi q era pra renomear os arquivos pra JSPX. Eu comecei a fazer isso e ta aparecendo um erro de NOT FOUND. Como vc falou deve ser erro de mapeamento. Vou dar uma olhada aki agora.
Qto ao novo produto “Alevi Polishop” o erplive to baixando aki agora e vou dar uma olhada.
É, eu acho q sou meio burro pra essas coisas… :oops:
1º) Tentei colocar os arquivos como JSPX. O servidor do JBoss não aceita como um arquivo JSP válido.
2º) Tentei ver o projeto q vc me mandou. Eu uso o Red Hat Developer Studio. Ele importa blza, mas na hora de rodar ele não encontra seu FacesContext.
Qria te fazer umas perguntas: qual IDE vc usa? Eu vi lá q o seu servidor é o Tomcat. Ele é bom? Pra JSF eu só usei o JBoss até hj. E qdo eu importei seu projeto, apareceu um monte de JSPs com um “>” no inicio do nome do arquivo. E pra que serve a pasta CVS?
o erro q ta dando é esse:
The requested resource (/nomeProjeto/include/formFisica.faces) is not available.
Eu sempre usei o Eclipse e atualmente estou usando Windows.
O projeto que você baixou está configurado para rodar no Tomcat mesmo. No Eclipse:
descompacte o arquivo no seu workspace
crie um novo “Java Project” no Eclipse
quando ele perguntar o nome do projeto, selecione “Create Project from existing source”
aponte para o diretório “erp” dentro do seu workspace
dê o nome do projeto como “erp” e clique em finish
Depois é só clicar o botão direito no projeto e selecionar “Run As -> Run on server…” e selecionar o Tomcat.
Feito isso, deveria funcionar na url “http://localhost:8080/erp”.
“1º) O que é CVS? Eu vi q muda os nomes dos arquivos na visualização no Eclipse, mas não entendia funcionalidade…”
O CVS é um versionador de fontes (semelhante ao Source Safe da microsoft, caso você conheça). O versionador é um programa que controla as alterações realizadas em um ou mais arquivos fontes.
Onde trabalho por exemplo, somos uma equipe de 5 pessoas, todas alterando os fontes da mesma aplicação. Temos um servidor CVS que controla todas as alterações dos fontes, feitas pelas pessoas da equipe. O Eclipse possui ferramentas embutidas que auxiliam na comparação destas alterações. Essas ferramentas ajudam a voltar trechos de código, mesclar códigos onde houveram alteração por mais de uma pessoa etc (isso sem contar que ele cria uma versão para cada fonte, como por exemplo 1.1, 1.2, 1.3).
O CVS é padrão para as principais IDEs - está presente no Eclipse, Netbeans, JDeveloper etc.
No meu caso, possuo um servidor CVS instalado na minha própria máquina para controlar as alterações que vou fazendo nos fontes.
Quando há alterações no arquivo, ou seja, ele passa a ficar diferente do servidor, o Eclipse marca com um sinal de maior (">") o arquivo.
Tente montar um servidor CVS na sua máquina - é bem leve. No Windows, baixe o CVSNT. No Linux rode o “apt-get install cvs”.
"2º) Vc sabe como criar um log pelo Log4j? Me da uma ideia aí. "
Sim. De uma forma geral, basta configurar o arquivo log4j.properties que está na raiz da pasta dos fontes. Depois utilize a classe org.apache.log4j.Logger para pegar a instância do arquivo de log. Aí é só usar!
"3º) Com relação a parte de persistencia, qual banco vc usa? Preciso criar um pra usar com seu projeto? "
MySQL 5.1 . Sim, você precisa ter um banco de dados. Como utilizei JPA, tanto faz qual banco você vai usar - só é importante lembrar que vai ter que configurar o arquivo persistence.xml com os dados do banco que usar. No resto, a aplicação vai sozinha.
“Cara, não sei oq faria se vc não tivesse me dado essa força. Agora consigo sair do lugar!”
Tâmo aí pra isso!!