代码之家  ›  专栏  ›  技术社区  ›  user1561108

错误[org.apache.velocity]资源管理器:无法找到资源的布局。任何资源加载程序中的“vm”

  •  0
  • user1561108  · 技术社区  · 8 年前

    MyController.java:

    @Controller
    public class ForemanController {
    
        @RequestMapping({"/index", "/"})
        public ModelAndView home(Model model){
    
            Map<String, String> map = new HashMap<String, String>();
            // .. fill map
            return new ModelAndView("index", "map", map);
        }   
    }
    

    ServletInitializer.java:

    public class ServletInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
    
        @Override
        protected Class<?>[] getRootConfigClasses() {
            return new Class<?>[0];
        }
    
        @Override
        protected Class<?>[] getServletConfigClasses() {
            return new Class<?>[]{AppConfig.class};
        }
    
        @Override
        protected String[] getServletMappings() {
            return new String[]{"/"};
        }
    }
    

    AppConfig.java:

    @Configuration
    @EnableWebMvc
    @ComponentScan(basePackages = {"com.my"})
    public class AppConfig {
    
        @Bean
        public VelocityConfigurer velocityConfig(){
            VelocityConfigurer velocityConfig = new VelocityConfigurer();
            velocityConfig.setResourceLoaderPath("/");
            return velocityConfig;
        }
    
        @Bean
        public VelocityLayoutViewResolver viewResolver(){
            VelocityLayoutViewResolver viewResolver = new VelocityLayoutViewResolver();
            viewResolver.setCache(true);
            viewResolver.setPrefix("/WEB-INF/views/");
            viewResolver.setSuffix(".vm");
            return viewResolver;
        }
    
    }
    

    指数WEB-INF/views下的vm:

    <!DOCTYPE HTML>
    <html>
    <head>
        <title>foreman</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    </head>
    <body>
        hello world!
    </body>
    </html>
    

    我部署到Wildfly,部署成功,用“localhost:8080/myapp”点击主页,我得到 Internal Server Error :

    2016-03-11 01:48:58,844 ERROR [org.apache.velocity] (default task-11) ResourceManager : unable to find resource 'layout.vm' in any resource loader.
    

    我在我的项目中没有任何地方提到“布局”。这是从哪里来的?

    1 回复  |  直到 8 年前
        1
  •  0
  •   Community Michael Schmitz    7 年前

    这是的默认行为 VelocityLayoutViewResolver 在你的豆子里 viewResolver 搜索模板 layout.vm .

    布局.vm 期望用作控制器确定的视图的框架或包装器。这非常方便,因为您不必担心特殊视图和常规HTML页面是如何合并的。

    请看这个例子 tutorial (从“创建模板”开始) question 详细信息。