Apache Velocity 转义点字符

Apache Velocity Escape Dot Character

提问人:hakuna matata 提问时间:12/13/2022 更新时间:12/13/2022 访问量:214

问:

我开始研究 Velocity 进行模板化,但是我似乎无法在变量名称后面转义点字符。下面是我拥有的模板。

## function.vm
void functionA() {
    int minimum_value = $class_name.MIN_VALUE;
    int maximum_value = $class_name.MAX_VALUE;
}

其中,是我在下面设置的变量。$class_nameVelocityContext

VelocityContext velocityContext = new VelocityContext();
velocityContext.put("class_name", "Short");

但是,这将输出以下内容,没有变化。

void functionA() {
    int minimum_value = $class_name.MIN_VALUE;
    int maximum_value = $class_name.MAX_VALUE;
}

在点字符之前添加反斜杠将替换变量,但它也会打印反斜杠,如下所示。$class_name\.MIN_VALUE

void functionA() {
    int minimum_value = Short\.MIN_VALUE;
    int maximum_value = Short\.MAX_VALUE;
}

逃避不是用反斜杠完成的吗?我找到了多个答案,说它应该带有反斜杠,其他答案则带有使用,但效果不佳。$esc.java()

转义 速度 Java 模板

评论


答:

3赞 Vini 12/13/2022 #1

您可以使用大括号,例如:class_name

## function.vm
void functionA() {
    int minimum_value = ${class_name}.MIN_VALUE;
    int maximum_value = ${class_name}.MAX_VALUE;
}

这将生成以下输出:

void functionA() {
    int minimum_value = Short.MIN_VALUE;
    int maximum_value = Short.MAX_VALUE;
}