Ich habe ein interessantes Problem mit Spring 3.1.0. Bei JSP-Seiten wird die EL nicht ausgewertet. Ich habe den Ansichtsauflösungs-Prozess debugged und JstlView wird verwendet und die Jstl-Bibliotheken werden erkannt. Allerdings machen meine JSP-Seiten nur Dinge wieSpring jsp Seite nicht bewertet
<%="Hello World!"%>
Es gibt viele Referenzen hier über dieses Problem, von denen keines für mich gearbeitet haben.
Script tags not rendered in JSP page (using Spring + Tiles + JSPX) Spring and JSP EL not being processed
Von der Spitze, hier ist meine Config;
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app 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"
version="2.5">
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
</web-app>
feder servlet.xml
<!--?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:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
<!--
https://stackoverflow.com/questions/3652090/difference-between-applicationcontext-and-spring-servlet-xml-in-spring
-->
</beans>
applicationContext.xml
<!--?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:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
<context:annotation-config />
<context:component-scan base-package="com.csc.fs.emea" />
<mvc:default-servlet-handler />
<mvc:annotation-driven />
<mvc:resources mapping="/static/**" location="/" />
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerExceptionResolver" p:order="1" />
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver" p:order="2" p:defaultErrorView="sorry" />
<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<property name="templateLoaderPath" value="/WEB-INF/freemarker/" />
<property name="freemarkerSettings">
<props>
<prop key="default_encoding">UTF-8</prop>
<prop key="output_encoding">UTF-8</prop>
<prop key="auto_include">macros.ftl</prop>
<prop key="auto_import">spring.ftl as spring</prop>
<prop key="template_update_delay">${freemarker.template.update.delay}</prop>
</props>
</property>
<property name="freemarkerVariables">
<props>
<prop key="googleAnalyticsId">${google.analytics.id}</prop>
</props>
</property>
</bean>
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="viewResolvers">
<list>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
<property name="contentType" value="text/html;charset=UTF-8"></property>
</bean>
<bean class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<property name="cache" value="true" />
<property name="prefix" value="" />
<property name="suffix" value=".html" />
<property name="contentType" value="text/html;charset=UTF-8"></property>
<property name="exposeSpringMacroHelpers" value="true" />
</bean>
</list>
</property>
</bean>
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="classpath:messages" />
</bean>
<bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<property name="paramName" value="lang" />
</bean>
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver"></bean>
<bean id="handlerMapping" class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
<property name="interceptors">
<ref bean="localeChangeInterceptor" />
</property>
</bean>
</beans>
Ich verwende den ContentNegoatingViewResolver, da ich auch ein paar Freemarker-Sachen und REST drin habe.
-Controller
@RequestMapping("/")
@Controller
public class RootResource extends AbstractResource {
...abridged...
@RequestMapping(value="/jsp", method = RequestMethod.GET, produces = "text/html")
public String getJSP(final Model m) {
return "example";
}
}
example.jsp
<%@ page isScriptingEnabled="true" isELIgnored="false" %>
<html>
<head>
<title>Hello World JSP Page.</title>
</head>
<body>
<font size="10"><%="Hello World!"%></font>
</body>
</html>
I return "Beispiel" als Name der Ansicht von meinem Controller und Sie können in den Protokollen es zum korrekten sehen WEB-INF/jsp/beispiel.jsp
22:35:13,049 DEBUG [[email protected]] [org.springframework.web.servlet.view.ContentNegotiatingViewResolver] Returning [org.springframework.web.servlet.view.JstlView: name 'example'; URL [/WEB-INF/jsp/example.jsp]] based on requested media type 'text/html'
22:35:13,050 TRACE [[email protected]] [org.springframework.web.servlet.view.JstlView] Rendering view with name 'example' with model {} and static attributes {}
22:35:13,054 DEBUG [[email protected]] [org.springframework.web.servlet.view.JstlView] Forwarding to resource [/WEB-INF/jsp/example.jsp] in InternalResourceView 'example'
So sieht alles gut aus, es ist nur so, dass die JSP-Seite nie richtig ausgewertet wird.
example.jsp sieht aus wie dieses
<%@ page isScriptingEnabled="true" isELIgnored="false" %> <%="Hello World!"%>
ich das Maven Jetty 6 Plugin mit der Webapp laufen.
Ich bin sicher, ich vermisse etwas Einfaches, es ist wahrscheinlich einer von denen "sah es zu lange" Probleme.
Danke für alle Hinweise, die Sie geben können.
Update 1 - ich habe mich verändert gerade die Frühling Servletzuordnung von /*
zu /spring/*
und jetzt funktioniert es. Es gibt also ein paar Details rund um das Frühlings-Servlet, die auf /*
gemappt sind, die ich verpasst habe.
Für Starter '<% =" Hallo Welt! "%>' Ist nicht EL-Syntax. EL würde '$ {" Hallo Welt "} lesen.' –
Danke Chris - Ich habe mit example.jsp herumgespielt und versucht, was du in einer früheren Inkarnation vorgeschlagen hast. Immer noch keine Freude. – biddster
Entschuldigung, ich hätte klarstellen sollen, ich habe nicht erwartet, dass es dein Problem löst (tut mir leid!) Es war nur ein Kommentar ;-) –