Spring и JSP EL не обрабатываются

#jsp #spring-mvc

#jsp #spring-mvc

Вопрос:

Мы запускаем Tomcat 6.0 с Spring 3.0.5, и по какой-то причине мы не можем заставить jsp оценить $ {blah}. Это проект maven со многими отдельными модулями, если это имеет значение, Eclipse Helios.

Вот фрагмент моего web.xml

 <web-app id="WebApp_ID" version="2.5" 
xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<display-name>xc.rio</display-name>...
 

И это не так (<%@ page isELIgnored=»false» %>), потому что, когда я помещаю это в свой jsp, страница отображается только как текст, означающий

 <%@ page isELIgnored="false" %>
<HTML>
...${blah}...
 

$ {2 2} не вычисляется. Также я пробовал это на tomcat 7. =-(

Обновление: я создал отдельное приложение spring и nonspring, и EL работает. Я думал, что это как-то связано с ViewResolver, но, думаю, это тоже не так.

 <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:util="http://www.springframework.org/schema/util"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:camel="http://camel.apache.org/schema/spring"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
    http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">

    <mvc:annotation-driven />
    <bean id="handlerMapping" class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"> 
        <property name="detectHandlersInAncestorContexts" value="true" /> 
    </bean> 

    <mvc:default-servlet-handler/>

    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
      <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
      <property name="suffix" value=".jsp"/>
    </bean>

</beans>
 

Комментарии:

1. попробуйте создать простую страницу с «$ {2 2}». Если он отображается как 4, то проблема не в Tomcat.

2. и если вы развернете простое веб-приложение jsp (без spring) с $ {2 2}, это будет отображаться как 4?

3. А что, если вы используете JSTL <c:out value="${2 2}" /> ? А что, если вы удалите весь весенний шум из своего проекта (или создадите совершенно новый проект без каких-либо влияний Maven и Spring)?

Ответ №1:

Попробуйте удалить <mvc:default-servlet-handler/> то, что заставляет spring обслуживать страницы как статические ресурсы.

Комментарии:

1. Это сделало это, но не без последствий, связанных с / *, который у меня есть в моем web.xml .