[RESOLVIDO] Projeto vraptor, problema na troca de servidor para tomcat 6.0

Olá,

Fui publicar meu projeto no servidor oficial e tive vários problemas com a jstl no tomcat 6.0. Desenvolvi utilizando a ultima versão 7.0, no entanto no servidor da empresa só tinha rodando a 6.0

Alguem sabe me dizer o que poderá estar influenciando e o que poderei fazer para não ter que mudar todo meu código?

//Funciona somente no tomcat 7.0
<c:if test="${usuarioWeb.isShouse()}">

//No tomcat 6.0 fui obrigado a trocar para
<c:if test="${usuarioWeb.isShouse}">

//No tomcat 6.0 Também não consigo usar este tipo de expressão na jstl
<c:if test="${error.message.startsWith('{')}">

Antes de começar a refazer tudo resolvi parar e perguntar se tem alguma alternativa e o porque isto estava acontecendo no tomcat 6.0

Os erros que recebi até agora:


type Exception report

message org.apache.jasper.JasperException: /header.jspf(175,4) The function startsWith must be used with a prefix when a default namespace is not specified

description The server encountered an internal error that prevented it from fulfilling this request.

exception

br.com.caelum.vraptor.view.ResultException: org.apache.jasper.JasperException: /header.jspf(175,4) The function startsWith must be used with a prefix when a default namespace is not specified

e

type Exception report

message org.apache.jasper.JasperException: /header.jspf(158,9) The function isShouse must be used with a prefix when a default namespace is not specified

description The server encountered an internal error that prevented it from fulfilling this request.

exception

br.com.caelum.vraptor.view.ResultException: org.apache.jasper.JasperException: /header.jspf(158,9) The function isShouse must be used with a prefix when a default namespace is not specified
	br.com.caelum.vraptor.view.DefaultPageResult.defaultView(DefaultPageResult.java:69)
	br.com.caelum.vraptor.interceptor.ForwardToDefaultViewInterceptor.intercept(ForwardToDefaultViewInterceptor.java:60)

Alguem já passou por algo parecido?

porque o tomcat 6 ele implementa o servlet 2.5 e o tomcat 7 implementa o servlet 3.0 por isso é possivel usar EL com essa nova sintaxe

// Funciona no tomcat 7.0 por que isso é uma feature nova da servlet 3.0 &lt;c:if test="${usuarioWeb.isShouse()}"&gt; // Essa é a mesma feature &lt;c:if test="${error.message.startsWith('{')}"&gt;
Essa feature diz que você pode acessar qualquer método público da sua instância.

Isso não tem como funcionar no tomcat 6… Se você quiser fazer funcionar, vai precisar criar getters para o que você precisa:

public boolean getMessageComecaComChave(){
   return this.message.startsWith("{");
}

// ai vc acessa assim:
&lt;c:if test="${error.messageComecaComChave}"&gt;&lt;/c:if&gt;

Ok muito obrigado, pelo que vi vai ser mais fácil pedir uma atualização de servidor. Pergunto aplicações que estão rodando atualmente 6.0 tem muito risco de parar de funcionar para upgrade ao tomcat 7.0?

Não… A compatibilidade é mantida :wink:

Só precisa tomar cuidado com algumas configurações…

Ok muito obrigado mestre Rafael :slight_smile: irei verificar com o pessoal de TI.