如何使用 jmustache 库获取模板参数?

我正在尝试获取所有模板参数 - {{}} 中的参数名称。例如,对于此模板:

{{pet}}追着{{toy}}

我想要“宠物”和“玩具”

我只能使用samskivert/jmustache 库,所以我不能使用不同的 mustache 库。

有没有办法用 jmustache 做到这一点,这样我就不必用正则表达式解析字符串了?


莫回无
浏览 101回答 2
2回答

有只小跳蛙

Mustache.Visitor用于访问模板中的标签而不执行它例子:List<String> vars = new ArrayList<>();Template tmpl = ... // compile your templatetmpl.visit(new Mustache.Visitor() {&nbsp; // I assume you don't care about the raw text or include directives&nbsp; public void visitText(String text) {}&nbsp; // You do care about variables, per your example&nbsp; public void visitVariable(String name) {vars.add("Variable: " + name); }&nbsp; // Also makes sense to visit nested templates.&nbsp; public boolean visitInclude(String name) { vars.add("Include: " + name); return true; }&nbsp; // I assume you also care about sections and inverted sections&nbsp; public boolean visitSection(String name) { vars.add("Section: " + name); return true; }&nbsp; public boolean visitInvertedSection(String name) { vars.add("Inverted Section: " + name); return true; }});Visitor从 1.15 版开始可用jmustache:<groupId>com.samskivert</groupId><artifactId>jmustache</artifactId><version>1.15</version>

侃侃尔雅

实际上有一种使用Visitor模式的机制https://github.com/samskivert/jmustache/issues/108#issuecomment-510071602但它尚未发布https://github.com/samskivert/jmustache/issues/109#issue- 466358322
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java