expressões EL não será executado em Tomcat 5.5, mas trabalhando no tomcat 6.0.20

StackOverflow https://stackoverflow.com/questions/1721518

  •  19-09-2019
  •  | 
  •  

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 ...

Foi útil?

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:

  1. Servidor de aplicativos em questão não suporta JSP 2.0.
  2. O web.xml não é declarado como Servlet 2.4 ou superior.
  3. A <%@page %> de JSP é configurado com isELIgnored=true.
  4. 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:

Como configurar o Tomcat para trabalhar com JSTL

Como referência e uso jstl em sua aplicação web

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 /

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top