expressões EL não será executado em Tomcat 5.5, mas trabalhando no tomcat 6.0.20
Pergunta
Estou desenvolvendo meu aplicativo usando primavera-web-mvc ...
Agora, no meu controlador que retorna assim:
public class InterfacesManageController implements Controller {
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
Map<String, Object> myModel = new HashMap<String, Object>();
myModel.put("interfacesList", this.interfacesSecurityProcessor.findByAll(0, null, null, null));
return new ModelAndView("common", "model", myModel);
}
Agora, meu JSP contém código a seguir:
<c:forEach items="${model.interfacesList}" var="prod">
<c:out value="${prod.id}"/> <c:out value="${prod.name}"/><br><br>
</c:forEach>
Agora, quando eu estou executando isso a plataforma Windows onde eu tenho tomcat 6.0.20, 2.6.11 OGNL ele está me dando saída exata que eu quero como:
117 eth1
118 eth1
119 eth0
Mas, quando estou implantando arquivo de guerra no unix (cento os) da plataforma, onde eu tenho tomcat 5.5, a expressão OGNL não são executadas e me dando saída como:
${prod.id} ${prod.name}
Alguém pode ter solução, que deve ser o problema com a versão expressão OGNL e tomcat versão?
Obrigado antecipadamente ...
Solução
Mas, quando estou implantando arquivo de guerra no Unix plataforma (CentOS), onde tenho Tomcat 5.5, a expressão EL não ter executado e me dando saída como:
${prod.id} ${prod.name}
Em outras palavras, a expressão EL não se avaliou em tudo e está mostrando como texto simples? Que pode ter uma ou mais das seguintes causas:
- Servidor de aplicativos em questão não suporta JSP 2.0.
- O
web.xml
não é declarado como Servlet 2.4 ou superior. - A
<%@page %>
de JSP é configurado comisELIgnored=true
. - A
web.xml
está configurado com<el-ignored>true</el-ignored>
em<jsp-config>
.
Tomcat 5.5 é Servlet 2.4 / JSP 2.0, então # 1 pode ser riscado. Você não mudou nada em webapp antes de implantar Presumo, então # 3 e # 4 pode provavelmente ser riscado. Agora deixou # 2. Talvez você declarou-o como Servlet 2.5 para Tomcat 6.0, enquanto o Tomcat 5.5 só entende até com Servlet 2.4. Desta forma, tudo vai se tornar uma bagunça como Tomcat, então, fallback para menos modus compatibilidade. Você precisa redeclare web.xml
como Servlet 2.4 para que ele irá trabalhar em ambos Tomcat 5.5 e 6.0. A declaração deve ser parecido:
<web-app
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<!-- Here you go. -->
</web-app>
Outras dicas
Você tem certeza que você incluiu biblioteca JSTL quer no Tomcat ou sua pasta lib do aplicativo da Web?
Estes links irão ajudá-lo:
Graças a BalusC pelo seu excelente resposta. Eu tinha exatamente o mesmo problema que ele diagnosticado anteriormente, e sua solução me pegou parte do caminho até lá. No entanto, eu também tinha que ter certeza de que várias dependências JSP e JSTL da minha aplicação eram todos compatíveis. Em particular, eu estava fazendo referência JSTL 1.2 e este problema não vai embora até que eu mudei essa dependência para JSTL 1.1.2 (altura em que eu tive que adicionar também uma dependência explícita sobre taglibs.standard: 1.1.2).
O seguinte post fornece muito mais informações sobre a compatibilidade entre versões diferentes: http://www.mularien.com/blog/2008/04/24/how-to-reference-and-use-jstl-in- seu-web-application /