Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 3.1.1 FreeMarkerconfiguer基于java的配置问题_Spring_Spring Mvc_Freemarker - Fatal编程技术网

Spring 3.1.1 FreeMarkerconfiguer基于java的配置问题

Spring 3.1.1 FreeMarkerconfiguer基于java的配置问题,spring,spring-mvc,freemarker,Spring,Spring Mvc,Freemarker,我将Spring3.1.1与Freemarker一起使用。 在我成功使用新的Spring3.1基于java的配置的新概念之后。 现在我尝试使用Freemarker。 然而,我得到了一个例外: javax.servlet.ServletException:无法解析名为的视图 名为“appServlet”的servlet中的“/welcome” org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.jav

我将Spring3.1.1与Freemarker一起使用。 在我成功使用新的Spring3.1基于java的配置的新概念之后。 现在我尝试使用Freemarker。 然而,我得到了一个例外:

javax.servlet.ServletException:无法解析名为的视图 名为“appServlet”的servlet中的“/welcome” org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1139) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:927) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:827) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778) javaservlet.http.HttpServlet.service(HttpServlet.java:621) javaservlet.http.HttpServlet.service(HttpServlet.java:722)

以下是网络配置:

package com.springway.config;

@Configuration
@ComponentScan("com.springway")
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {

    @Inject
    private Environment environment;

    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
    }

    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        converters.add(new MappingJacksonHttpMessageConverter());
    }

    @Bean
    public ViewResolver viewResolver() {
        UrlBasedViewResolver viewResolver = new UrlBasedViewResolver();
        viewResolver.setViewClass(FreeMarkerView.class);
        return viewResolver;
    }

    @Bean
    public FreeMarkerConfigurer freeMarkerConfigurer() {

        FreeMarkerConfigurer configurer = new FreeMarkerConfigurer();
        configurer.setTemplateLoaderPath(
                "/WEB-INF/freemarker.xml");

        return configurer;
    }

我和你的问题是一样的。我尝试为“org.springframework.web.servlet.view.freemarker.freemarkerconfiguer”打开日志级别“DEBUG”。我发现了以下消息:


java.io.FileNotFoundException:ServletContext资源[/WEB-INF/freemarker/]无法解析为URL,因为它不存在
在org.springframework.web.context.support.ServletContextResource.getURL(ServletContextResource.java:154)~[spring-web-3.1.1.RELEASE.jar:3.1.1.RELEASE]
在org.springframework.web.context.support.ServletContextResource.getFile(ServletContextResource.java:169)~[spring-web-3.1.1.RELEASE.jar:3.1.1.RELEASE]
在org.springframework.ui.freemark.FreeMarkerConfigurationFactory.getTemplateLoaderFormath(FreeMarkerConfigurationFactory.java:351)[spring-context-support-3.1.1.RELEASE.jar:3.1.1.RELEASE]
在org.springframework.ui.freemark.FreeMarkerConfigurationFactory.createConfiguration(FreeMarkerConfigurationFactory.java:304)[spring-context-support-3.1.1.RELEASE.jar:3.1.1.RELEASE]
.....

和码头的有线日志:


WARN org.eclipse.jetty.util.log-/freemarker/

我不知道发生了什么事!因此,我用另一个名称替换了“templateLoaderPath”的值,如“/WEB-INF/tmpl freemarker/”,然后一切都是可行的

接下来,我尝试使用测试“/WEB-INF/freemarker/html.ftl”。结果如下:

Resource under /WEB-INF/freemarker/: null
我的测试代码:

@Inject
私有ServletContext ServletContext;
试一试{
logger.info(“在/WEB-INF/freemarker/:{},servletContext.getResource(“/WEB-INF/freemarker/html.ftl”)下的资源);
}捕获(例外e){
logger.info(“获取资源时异常”,e);
}
似乎也无法正确找到“/WEB-INF/freemarker/”下的资源。但我不确定Spring的ServletContext的对象是否与JavaServlet的正常环境中的对象相同


我使用的是FreeMarker 2.3.19、Springframework 3.1.1.RELEASE和jetty maven插件7.4.5.v20110725,它们都是maven的插件。

我和你的问题一样。我尝试为“org.springframework.web.servlet.view.freemarker.freemarkerconfiguer”打开日志级别“DEBUG”。我发现了以下消息:

@Configuration
@EnableWebMvc

@ImportResource("classpath:/security-integration.xml")
@ComponentScan("com.springway")
public class WebConfiguration extends WebMvcConfigurerAdapter {

    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
    }


    @Bean
    public FreeMarkerViewResolver viewResolver() {
        FreeMarkerViewResolver freeMarkerViewResolver = new FreeMarkerViewResolver();
        freeMarkerViewResolver.setCache(true);
        freeMarkerViewResolver.setPrefix("");
        freeMarkerViewResolver.setSuffix(".ftl");
        return freeMarkerViewResolver;
    }

    @Bean
    public FreeMarkerConfigurer freemarkerConfig() {
        FreeMarkerConfigurer freeMarkerConfigurer = new FreeMarkerConfigurer();
        freeMarkerConfigurer.setTemplateLoaderPath("/WEB-INF/freemarker/");
        Properties settings = new Properties();
        settings.setProperty("number_format", "0.######");
        freeMarkerConfigurer.setFreemarkerSettings(settings);
        Map variables = new java.util.HashMap<String, Object>();

        variables.put("xml_escape", new XmlEscape());
        freeMarkerConfigurer.setFreemarkerVariables(variables);
        return freeMarkerConfigurer;
    }
}

java.io.FileNotFoundException:ServletContext资源[/WEB-INF/freemarker/]无法解析为URL,因为它不存在
在org.springframework.web.context.support.ServletContextResource.getURL(ServletContextResource.java:154)~[spring-web-3.1.1.RELEASE.jar:3.1.1.RELEASE]
在org.springframework.web.context.support.ServletContextResource.getFile(ServletContextResource.java:169)~[spring-web-3.1.1.RELEASE.jar:3.1.1.RELEASE]
在org.springframework.ui.freemark.FreeMarkerConfigurationFactory.getTemplateLoaderFormath(FreeMarkerConfigurationFactory.java:351)[spring-context-support-3.1.1.RELEASE.jar:3.1.1.RELEASE]
在org.springframework.ui.freemark.FreeMarkerConfigurationFactory.createConfiguration(FreeMarkerConfigurationFactory.java:304)[spring-context-support-3.1.1.RELEASE.jar:3.1.1.RELEASE]
.....

和码头的有线日志:


WARN org.eclipse.jetty.util.log-/freemarker/

我不知道发生了什么事!因此,我用另一个名称替换了“templateLoaderPath”的值,如“/WEB-INF/tmpl freemarker/”,然后一切都是可行的

接下来,我尝试使用测试“/WEB-INF/freemarker/html.ftl”。结果如下:

Resource under /WEB-INF/freemarker/: null
我的测试代码:

@Inject
私有ServletContext ServletContext;
试一试{
logger.info(“在/WEB-INF/freemarker/:{},servletContext.getResource(“/WEB-INF/freemarker/html.ftl”)下的资源);
}捕获(例外e){
logger.info(“获取资源时异常”,e);
}
似乎也无法正确找到“/WEB-INF/freemarker/”下的资源。但我不确定Spring的ServletContext的对象是否与JavaServlet的正常环境中的对象相同

我使用的是FreeMarker 2.3.19、Springframework 3.1.1.RELEASE和jetty maven插件7.4.5.v20110725
@Configuration
@EnableWebMvc

@ImportResource("classpath:/security-integration.xml")
@ComponentScan("com.springway")
public class WebConfiguration extends WebMvcConfigurerAdapter {

    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
    }


    @Bean
    public FreeMarkerViewResolver viewResolver() {
        FreeMarkerViewResolver freeMarkerViewResolver = new FreeMarkerViewResolver();
        freeMarkerViewResolver.setCache(true);
        freeMarkerViewResolver.setPrefix("");
        freeMarkerViewResolver.setSuffix(".ftl");
        return freeMarkerViewResolver;
    }

    @Bean
    public FreeMarkerConfigurer freemarkerConfig() {
        FreeMarkerConfigurer freeMarkerConfigurer = new FreeMarkerConfigurer();
        freeMarkerConfigurer.setTemplateLoaderPath("/WEB-INF/freemarker/");
        Properties settings = new Properties();
        settings.setProperty("number_format", "0.######");
        freeMarkerConfigurer.setFreemarkerSettings(settings);
        Map variables = new java.util.HashMap<String, Object>();

        variables.put("xml_escape", new XmlEscape());
        freeMarkerConfigurer.setFreemarkerVariables(variables);
        return freeMarkerConfigurer;
    }
}
@EnableWebMvc @ImportResource(“classpath:/security integration.xml”) @组件扫描(“com.springway”) 公共类网络配置扩展了WebMVCConfigureAdapter{ public void addResourceHandlers(ResourceHandlerRegistry注册表){ registry.addResourceHandler(“/resources/**”).addResourceLocations(“/resources/”); } @豆子 public FreeMarkerViewResolver viewsolver(){ FreeMarkerViewResolver FreeMarkerViewResolver=新建FreeMarkerViewResolver(); freemarkervewresolver.setCache(true); freeMarkerViewResolver.setPrefix(“”); freeMarkerViewResolver.setSuffix(“.ftl”); 返回freemarkervewersolver; } @豆子 public freemarkerconfiguer freemarkerConfig(){ freemarkerconfiguer freemarkerconfiguer=新的freemarkerconfiguer(); Freemarker配置
import org.springframework.web.portlet.ModelAndView; 
import org.springframework.web.servlet.ModelAndView;