Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.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
Java Velocity模板元数据_Java_Apache_Metadata_Velocity - Fatal编程技术网

Java Velocity模板元数据

Java Velocity模板元数据,java,apache,metadata,velocity,Java,Apache,Metadata,Velocity,是否包含向模板添加元数据的机制 我试图向模板中添加一些额外的信息(例如,类型和描述性名称),然后阅读这些信息,以编程方式按类型对模板进行分组,并使用描述性名称在UI上列出模板 我曾尝试使用literal#[…]#块(并解析它们)和#set指令,但两者都有问题。它们很粗糙(需要对模板进行一些解析),而且一点也不优雅。嗯,我不知道有什么内置的东西可以做到这一点。为了避免在第一个过程中处理整个模板,一个技巧是在该过程中有条件地抛出异常(MetadataFinished),而不是正常执行 显然,这仍然需

是否包含向模板添加元数据的机制

我试图向模板中添加一些额外的信息(例如,类型和描述性名称),然后阅读这些信息,以编程方式按类型对模板进行分组,并使用描述性名称在UI上列出模板


我曾尝试使用literal
#[…]#
块(并解析它们)和
#set
指令,但两者都有问题。它们很粗糙(需要对模板进行一些解析),而且一点也不优雅。

嗯,我不知道有什么内置的东西可以做到这一点。为了避免在第一个过程中处理整个模板,一个技巧是在该过程中有条件地抛出异常(
MetadataFinished
),而不是正常执行

显然,这仍然需要预先编译整个模板,尽管这在执行时会很有用

例如

##
有点难看-它只是为了阻止一个空行被输出。如果可读性很重要,可以使用宏使其更整洁:

#metadata("vm2")
-----------
This is VM2
-----------
该宏可以在全局
VM\u global\u库中定义。VM

$!metadata.set("vm1")##
-----------
This is VM1
-----------
#macro( metadata $key )
$!metadata.set($key)#end
仅供参考,输出如预期:

-----------
This is VM1
-----------
-----------
This is VM2
-----------

同意。没有一种干净的方法可以使用Velocity实现这一点。无论如何,Velocity项目似乎正在消亡。
-----------
This is VM1
-----------
-----------
This is VM2
-----------