2015-08-13 3 views
0

Я пытался интегрировать Spring framework с представлениями freemarker, но у меня есть некоторые проблемы, которые я не могу решить.Не удалось разрешить представление, Spring MVC-интеграция с freemarker

Я получаю эту ошибку:

SEVERE: Servlet.service() for servlet [appServlet] in context with path [/springmvc] 
threw exception [Could not resolve view with name 'home' in servlet with name 'appServlet'] with root cause 
javax.servlet.ServletException: Could not resolve view with name 'home' in servlet with name 'appServlet' 
    at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1190) 

это мой контроллер:

@Controller 
public class HomeController { 

    private static final Logger logger = LoggerFactory.getLogger(HomeController.class); 

    /** 
    * Simply selects the home view to render by returning its name. 
    */ 
    @RequestMapping(value = "/", method = RequestMethod.GET) 
    public String home(Locale locale, Model model) { 
     logger.info("Welcome home! The client locale is {}.", locale); 

     Date date = new Date(); 
     DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale); 

     String formattedDate = dateFormat.format(date); 

     model.addAttribute("serverTime", formattedDate); 

     return "home"; 
    } 
} 

И мои взгляды storeds в WEB-INF/views: это home.ftl:

<html> 
<head> 
    <title>Home</title> 
</head> 
<body> 
<h1> 
    Hello world! 
</h1> 

<P> The time on the server is ${serverTime}. </P> 
</body> 
</html> 

Я думаю, это проблема с servlet-context.xml, так вот вот:

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

    <!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure --> 

    <!-- Enables the Spring MVC @Controller programming model --> 
    <annotation-driven /> 

    <!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory --> 
    <resources mapping="/resources/**" location="/resources/" /> 


    <!-- freemarker config --> 
    <beans:bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"> 
     <beans:property name="templateLoaderPath" value="/WEB-INF/views/"/> 
    </beans:bean> 

    <!-- 
     View resolvers can also be configured with ResourceBundles or XML files. If you need 
     different view resolving based on Locale, you have to use the resource bundle resolver. 
    --> 
    <beans:bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver"> 
     <beans:property name="cache" value="true"/> 
     <beans:property name="prefix" value="/WEB-INF/views/"/> 
     <beans:property name="suffix" value=".ftl"/> 
    </beans:bean> 

    <context:component-scan base-package="net.codejava.springmvc" /> 



</beans:beans> 

ответ

0

Удалить вариант префикса из фасоли viewResolver

<beans:bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver"> 
    <beans:property name="cache" value="true"/> 
    <beans:property name="suffix" value=".ftl"/> 
</beans:bean>