如何在 java 中为车把创建自定义列表迭代器助手
How to create a custom list iterator helper for handlebars in java
我正在为 java 使用车把来自:https://github.com/jknack/handlebars.java
我有一个 CustomObject 列表和一个模板文件 template.hbs。我可以使用手柄条 {{#each customList}} 块来遍历此列表。
现在我只想遍历 customList 中的偶数索引对象。
服务器端:
handlebars.registerHelper("even", new Helper<List<?>>() {
@Override
public Object apply(List<?> list, Options options)
throws IOException {
if(list!=null && list.size()>1) {
for(int index=0;index<list.size();index++) {
if((index+1) % 2 != 0) {
options.fn(list.remove(index));
}
}
}
return list;
Template.hbs的一部分:
{{#even customList}}
{{customProperty1}}
{{/even}}
但这不会迭代我的 customList,而是将我的列表打印为字符串。
我认为使用内置伪变量更容易,因此您可以完成您的要求,而无需使用自定义助手:
{{#customList}}
{{#if @even}}
{{customProperty1}}
{{/if}}
{{/customList}}
注意它的内部索引从0开始(解释为偶数),如果你需要反转你可以使用#unless或@odd。
我还想指出 NumberHelper,它提供 isEven、isOdd 和条纹。
但是如果你真的坚持编写自己的自定义助手来迭代 Iterable 的偶数索引元素,你最好研究 EachHelper 的源代码,在那里你还会发现其他伪变量
我正在为 java 使用车把来自:https://github.com/jknack/handlebars.java 我有一个 CustomObject 列表和一个模板文件 template.hbs。我可以使用手柄条 {{#each customList}} 块来遍历此列表。
现在我只想遍历 customList 中的偶数索引对象。
服务器端:
handlebars.registerHelper("even", new Helper<List<?>>() {
@Override
public Object apply(List<?> list, Options options)
throws IOException {
if(list!=null && list.size()>1) {
for(int index=0;index<list.size();index++) {
if((index+1) % 2 != 0) {
options.fn(list.remove(index));
}
}
}
return list;
Template.hbs的一部分:
{{#even customList}}
{{customProperty1}}
{{/even}}
但这不会迭代我的 customList,而是将我的列表打印为字符串。
我认为使用内置伪变量更容易,因此您可以完成您的要求,而无需使用自定义助手:
{{#customList}}
{{#if @even}}
{{customProperty1}}
{{/if}}
{{/customList}}
注意它的内部索引从0开始(解释为偶数),如果你需要反转你可以使用#unless或@odd。
我还想指出 NumberHelper,它提供 isEven、isOdd 和条纹。
但是如果你真的坚持编写自己的自定义助手来迭代 Iterable 的偶数索引元素,你最好研究 EachHelper 的源代码,在那里你还会发现其他伪变量