fex-team / fis-velocity-tools

Like velocity-tools, we focus on the front-end integrated solution.
29 stars 23 forks source link

extends 的时候总是拿不到 layout.vm #27

Open shuiiiiiimu opened 8 years ago

shuiiiiiimu commented 8 years ago

设置 fis.properties 也没用。

extends("page/layout/application.vm") --> #extends("/page/layout/application.vm")

widget("widget/bottom_banner.vm") --> #widget("/widget/bottom_banner.vm")

但是改成后面的绝对路径就可以读到了。

没有 spring-boot 的 demo 可以看看?

2betop commented 8 years ago

https://github.com/fex-team/jello-spring-example

shuiiiiiimu commented 8 years ago

我就参考这个项目搭了一个 demo

#extends("page/layout/application.vm") --> #extends("/page/layout/application.vm")

#widget("widget/bottom_banner.vm") --> #widget("/widget/bottom_banner.vm")

但是改成后面的绝对路径就可以读到了。

这时候可以正常渲染模版了 但是 console 报错如下。是不是就代表了 config/map.json 读取不到呢?

java.lang.NullPointerException
    at com.baidu.fis.util.MapCache.getNode(MapCache.java:157)
    at com.baidu.fis.util.MapCache.getNode(MapCache.java:166)
    at com.baidu.fis.util.Resource.getUri(Resource.java:477)
    at com.baidu.fis.util.Resource.getUri(Resource.java:473)
    at com.baidu.fis.velocity.event.IncludeFisSource.includeEvent(IncludeFisSource.java:23)
    at org.apache.velocity.app.event.IncludeEventHandler$IncludeEventExecutor.execute(IncludeEventHandler.java:92)
    at org.apache.velocity.app.event.EventHandlerUtil.iterateOverEventHandlers(EventHandlerUtil.java:444)
    at org.apache.velocity.app.event.EventHandlerUtil.callEventHandlers(EventHandlerUtil.java:421)
    at org.apache.velocity.app.event.EventHandlerUtil.includeEvent(EventHandlerUtil.java:246)
    at org.apache.velocity.runtime.directive.Parse.render(Parse.java:156)
    at com.baidu.fis.velocity.directive.AbstractInclude.render(AbstractInclude.java:237)
    at com.baidu.fis.velocity.directive.Extends.doRender(Extends.java:100)
    at com.baidu.fis.velocity.directive.Extends.render(Extends.java:47)
    at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:207)
    at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:342)
    at org.apache.velocity.Template.merge(Template.java:356)
    at org.apache.velocity.Template.merge(Template.java:260)
    at org.springframework.web.servlet.view.velocity.VelocityView.mergeTemplate(VelocityView.java:517)
    at org.springframework.web.servlet.view.velocity.VelocityView.doRender(VelocityView.java:462)
    at org.springframework.web.servlet.view.velocity.VelocityView.renderMergedTemplateModel(VelocityView.java:292)
    at org.springframework.web.servlet.view.AbstractTemplateView.renderMergedOutputModel(AbstractTemplateView.java:167)
    at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:303)
    at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1244)
    at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1027)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:971)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:618)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:85)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:516)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1086)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:659)
    at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:223)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1558)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1515)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)
java.lang.NullPointerException
    at com.baidu.fis.util.MapCache.getNode(MapCache.java:157)
    at com.baidu.fis.util.MapCache.getNode(MapCache.java:166)
    at com.baidu.fis.util.Resource.getUri(Resource.java:477)
    at com.baidu.fis.util.Resource.getUri(Resource.java:473)
    at com.baidu.fis.velocity.event.IncludeFisSource.includeEvent(IncludeFisSource.java:23)
    at org.apache.velocity.app.event.IncludeEventHandler$IncludeEventExecutor.execute(IncludeEventHandler.java:92)
    at org.apache.velocity.app.event.EventHandlerUtil.iterateOverEventHandlers(EventHandlerUtil.java:444)
    at org.apache.velocity.app.event.EventHandlerUtil.callEventHandlers(EventHandlerUtil.java:421)
    at org.apache.velocity.app.event.EventHandlerUtil.includeEvent(EventHandlerUtil.java:246)
    at org.apache.velocity.runtime.directive.Parse.render(Parse.java:156)
    at com.baidu.fis.velocity.directive.AbstractInclude.render(AbstractInclude.java:237)
    at com.baidu.fis.velocity.directive.Widget.render(Widget.java:42)
    at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:207)
    at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:72)
    at com.baidu.fis.velocity.directive.Block.render(Block.java:51)
    at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:207)
    at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:72)
    at org.apache.velocity.runtime.directive.Block.render(Block.java:82)
    at com.baidu.fis.velocity.directive.Body.render(Body.java:32)
    at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:207)
    at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:342)
    at org.apache.velocity.runtime.directive.Parse.render(Parse.java:260)
    at com.baidu.fis.velocity.directive.AbstractInclude.render(AbstractInclude.java:237)
    at com.baidu.fis.velocity.directive.Extends.doRender(Extends.java:100)
    at com.baidu.fis.velocity.directive.Extends.render(Extends.java:47)
    at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:207)
    at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:342)
    at org.apache.velocity.Template.merge(Template.java:356)
    at org.apache.velocity.Template.merge(Template.java:260)
    at org.springframework.web.servlet.view.velocity.VelocityView.mergeTemplate(VelocityView.java:517)
    at org.springframework.web.servlet.view.velocity.VelocityView.doRender(VelocityView.java:462)
    at org.springframework.web.servlet.view.velocity.VelocityView.renderMergedTemplateModel(VelocityView.java:292)
    at org.springframework.web.servlet.view.AbstractTemplateView.renderMergedOutputModel(AbstractTemplateView.java:167)
    at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:303)
    at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1244)
    at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1027)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:971)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:618)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:85)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:516)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1086)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:659)
    at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:223)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1558)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1515)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)
2betop commented 8 years ago

嗯,应该是 map.json 没读取成功。

2betop commented 8 years ago

注意看 web.xml 里面有个 listen 是读 map.json 的,看下你的配置上了没有。可以直接看 jello 模拟环境里面的 web.xml