Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

自定义Tag 中调用其他模板出现 NPE #6

Closed
liufuxi opened this issue Dec 1, 2014 · 0 comments
Closed

自定义Tag 中调用其他模板出现 NPE #6

liufuxi opened this issue Dec 1, 2014 · 0 comments
Labels

Comments

@liufuxi
Copy link

liufuxi commented Dec 1, 2014

自定义 tag 实现如下:

@JetAnnotations.Tags
public class MyTags {
    private static final TimedSizeCache cache = new TimedSizeCache(128);

    public static void cache(JetTagContext ctx, String name, int timeout) throws IOException {

        Map<String, Object> context = new HashMap<String, Object>();
        context.put("userlist", DaoUtils.getUserList());
        String templateName = "/users.jetx";
        JetTemplate template = ctx.getEngine().getTemplate(templateName);
        OutputStream out = new java.io.ByteArrayOutputStream();

        template.render(context, out);
        String value = out.toString();
        System.out.println(value+"\n");

        ctx.getWriter().print(value);
        out.close();
    }
}

报以下错误:

jetbrick.template.runtime.InterpretException: tag invoke error: demo.MyTags#cache()
template: index.jetx: 527,5
-------------------------------------------------------------------------------
 525: <div>
 526: 
 527: #tag cache("CACHE-ME-30-MIN", 30*60)
           ^ -- here
 528:     今天天气: 
 529: #end
-------------------------------------------------------------------------------
] with root cause
java.lang.NullPointerException
    at jetbrick.template.runtime.JetTagContext.getWriter(JetTagContext.java:75)
    at jetbrick.demo.MyTags.cache(MyTags.java:31)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)
    at jetbrick.bean.MethodInfo.invoke(MethodInfo.java:192)
    at jetbrick.template.resolver.tag.TagInvoker.invoke(TagInvoker.java:41)
    at jetbrick.template.parser.ast.AstDirectiveTag.doInvoke(AstDirectiveTag.java:70)
    at jetbrick.template.parser.ast.AstDirectiveTag.execute(AstDirectiveTag.java:51)
    at jetbrick.template.parser.ast.AstStatementList.execute(AstStatementList.java:202)
    at jetbrick.template.parser.ast.AstTemplate.execute(AstTemplate.java:37)
    at jetbrick.template.JetTemplateImpl.doInterpret(JetTemplateImpl.java:156)
    at jetbrick.template.JetTemplateImpl.render(JetTemplateImpl.java:147)
    at jetbrick.template.web.springmvc.JetTemplateView.renderMergedTemplateModel(JetTemplateView.java:37)
    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:1228)
    at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1011)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:955)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857)
@subchen subchen changed the title 自定义Tag 自定义Tag 中调用其他模板出现 NPE Dec 1, 2014
@subchen subchen added the bug label Dec 1, 2014
subchen added a commit that referenced this issue Dec 1, 2014
@subchen subchen closed this as completed Dec 1, 2014
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants