【问题标题】:Spring MVC and freemarker java annotation configurationSpring MVC和freemarker java注解配置
【发布时间】:2016-10-13 07:45:39
【问题描述】:

我正在尝试在我的项目中使用freemarker 作为我的模板引擎,我的视图是 .JSP 文件,但其中没有任何 jsp 代码,我可以将它们更改为 .html,但我也尝试过,我得到了同样的错误

这是我的 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 {

}

我的 Spring 版本是 4.2.5.RELEASE,我的 freeMarker 版本是 2.3.21

这是我启动网络应用时的错误

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)

【问题讨论】:

  • 将视图解析器后缀更改为 .html

标签: java spring spring-mvc freemarker


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2012-09-20
    • 2014-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多