2

我有一个应用程序,我正在尝试创建一个速度模板存储库,这将帮助我集中所有电子邮件模板,并允许我创建一个通信中心。所有模板都将在运行时调用,并通过服务填充数据。

我的问题是,当他们为速度模板定义模板输入时,我需要为用户提供可选和强制参数列表。

有没有办法从速度模板文件中读取标记/标签并提取它们?

就像我想要一个令牌列表 $name.address.streetName 可以从 .vm 文件中获得。

我不想去 Regex 。

我不必缓存或重用它们,它只是一次读取并将默认、强制和可选参数存储在数据库中。

我遵循这些模式: http: //kickjava.com/src/org/apache/velocity/test/view/TemplateNodeView.java.htm

如何使用字符串作为速度模板?

请指教。

4

1 回答 1

1

我让它像这样工作

            RuntimeServices runtimeServices = RuntimeSingleton.getRuntimeServices();            
        StringReader reader = new StringReader(String velocityTemplateBodu);
        SimpleNode node = runtimeServices.parse(reader, "dummyOne.vm");


        for(int i=0; i<node.jjtGetNumChildren();i++){
            if(node.jjtGetChild(i) instanceof org.apache.velocity.runtime.parser.node.ASTReference ){
                System.out.println("Node -----------------"+i +"---"+node.jjtGetChild(i).literal());
            }
        }

使用 SimpleNode 类,您可以获得 .vm 文件中的所有节点。

使用 javaCC 作为 ASTReference 和 ASTText(都扩展 SimpleNode)来读取节点。要获取令牌,您需要获取 ASTReference 并使用 ASTText 获取 HTML 文本。

于 2012-11-06T22:58:35.780 回答