[英]Replace tag in Apache velocity in java
尚未使用Apache velocity
,但是在当前项目中,我们使用此库将数据填充到模板中。
想问问是否可以使用Velocity
替换模板内的标签?
我有这样的模板:
<head>
<link href="conf/templates/template_style.css" rel="stylesheet" type="text/css"/>
</head>
<p>
<span class="mention" data-id="295" data-value="${AutumnExams}">
<span contenteditable="false">${AutumnExams}</span>
</span>
</p>
并使用以下代码:
private String applyDynamicContent(String templateHtmlData, List<DynamicContentPart> dynamicContentParts) throws ParseException {
if (!dynamicContentParts.isEmpty()) {
RuntimeServices rs = RuntimeSingleton.getRuntimeServices();
SimpleNode sn = rs.parse(new StringReader(templateHtmlData), "Template body");
Template template = new Template();
template.setRuntimeServices(rs);
template.setData(sn);
template.initDocument();
VelocityContext context = createVelocityContext(null, null);
dynamicContentParts.forEach(dContent -> context.put(dContent.getPlaceholder(), dContent.getContent()));
StringWriter writer = new StringWriter();
template.merge(context, writer);
return writer.toString();
}
return templateHtmlData;
}
我只替换: ${AutumnExams}
占位符。 但是有可能替换整个SPAN,例如基于data-value="${AutumnExams}"
我有1小时的velocity lib
经验,因此希望获得代码帮助。
@gmcontessa说的是正确的,您将需要在跨度字段上使用if-check。 最简单的方法是检查该值是否不为null,然后在您的跨度中将其替换:
#if ($!AutumnExams)
<span class="mention" data-id="295" data-value="$!AutumnExams">
<span contenteditable="false">$!AutumnExams</span>
</span>
#end
使用$的主要原因! 是要检查您的变量是否有值,如果没有,它将只打印一个空字符串。 与if-check一起使用时,如果变量为空,则返回false。
另外,如果要对速度变量的值进行特定的if检查,则可以执行以下操作:
#if ("$!AutumnExams" == "Maths")
<span class="mention" data-id="295" data-value="$!AutumnExams">
<span contenteditable="false">Maths</span>
</span>
#else
##Code here
#end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.