2016-06-13 127 views
1

我想在我的项目中使用freemarker作为我的模板引擎,我的视图是.JSP文件,但里面没有任何jsp代码,我可以将它们更改为.html,但我也试过了,我也得到了同样的错误Spring MVC和freemarker java注释配置

这里是我的JavaConfig类

@Configuration 
@EnableWebMvc 
@ComponentScan({"configuracion", "controladores", "seguridad"}) 
public class ConfigMVC extends WebMvcConfigurerAdapter { 

    @Override 
    public void addResourceHandlers(ResourceHandlerRegistry registry) { 
     registry.addResourceHandler("/resources/**").addResourceLocations("/WEB-INF/resources/"); 

    } 

@Bean 
    public FreeMarkerConfigurer freemarkerConfig() { 

     FreeMarkerConfigurer freeMarkerConfigurer = new FreeMarkerConfigurer(); 

     freeMarkerConfigurer.setTemplateLoaderPath("/WEB-INF/views/"); 
     freeMarkerConfigurer.setDefaultEncoding("UTF-8"); 

     return freeMarkerConfigurer; 
    } 

@Bean 
    public FreeMarkerViewResolver viewResolver() { 

     FreeMarkerViewResolver viewResolver = new FreeMarkerViewResolver(); 
     viewResolver.setPrefix("/WEB-INF/views/"); 
     viewResolver.setSuffix(".jsp"); 
     viewResolver.setCache(false); //Set to true during production 
     viewResolver.setContentType("text/html;charset=UTF-8"); 
     viewResolver.setOrder(0); 

     return viewResolver; 
    } 
} 

这里是我的初始化器类

public class WebInicializar extends AbstractAnnotationConfigDispatcherServletInitializer { 

    @Override 
    protected Class<?>[] getRootConfigClasses() { 
     return new Class[]{RootConfig.class}; 
    } 

    @Override 
    protected Class<?>[] getServletConfigClasses() { 
     return new Class[]{ConfigMVC.class}; 
    } 

    @Override 
    protected String[] getServletMappings() { 
     return new String[]{"/"}; 
    } 

    @Override 
    protected Filter[] getServletFilters() { 
     Filter[] singleton = {new CORSFilter()}; 
     return singleton; 
    } 

    @Override 
    protected DispatcherServlet createDispatcherServlet(WebApplicationContext servletAppContext) { 
     final DispatcherServlet dispatcherServlet = (DispatcherServlet) super.createDispatcherServlet(servletAppContext); 
     dispatcherServlet.setThrowExceptionIfNoHandlerFound(true); 
     return dispatcherServlet; 
    } 

我的根配置

@Configuration 
@ComponentScan(basePackages = {"controladores", "seguridad"}) 
@Import({ConfigMVC.class, SeguridadConfig.class}) 
public class RootConfig { 

} 

我的春天版本是4.2.5.RELEASE和我的Freemarker版本是2.3.21

这是错误,当我劳克我的web应用程序

Advertencia: StandardWrapperValve[dispatcher]: Servlet.service() for 

servlet dispatcher threw exception 
javax.servlet.ServletException: Could not resolve view with name 'login' in servlet with name 'dispatcher' 
    at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1226) 
+0

将您的视图解析器后缀更改为.html –

回答

1

Freemarker的使用前缀,在FreemarkerConfigurer设置。 您需要从FreeMarkerViewResolver中删除setPrefix