4

我在 Java 中使用 Handlebars 和 Dropwizard。我想比较 2 个字符串,如果它们相同,我想做点什么。我知道 Javascript 中有一些 Helpers,但我不知道如何使它们适应 java。

我有这段代码,但问题是,如何添加第二个值来检查它们是否相等。

public enum StringHelper implements Helper<Object> {
     eq {
         @Override
         public Boolean safeApply(final Object value, final Options options) {
           return ((String)value).equals(/*SECOND VALUE*/);
         }
       };

       @Override
       public Boolean apply(Object context, Options options) throws IOException {
         return safeApply(context, options);
       }

       protected abstract Boolean safeApply(final Object value,
                                        final Options options);
     }
}
4

2 回答 2

5

首先为您的自定义助手创建一个类:

public class HandlebarsHelpers {
    public CharSequence equals(final Object obj1, final Options options) throws IOException {
        Object obj2 = options.param(0);
        return Objects.equals(obj1, obj2) ? options.fn() : options.inverse();
    }
}

然后注册该类:

Handlebars handlebars = new Handlebars();
handlebars.registerHelpers(new HandlebarsHelpers());

使用助手:

{{#equals 'A' type}}
    <p>The type is A</p>
{{else}}
    <p>The type is NOT A</p>
{{/equals}}
于 2016-04-19T02:20:07.840 回答
1

有一个更简单的解决方案:

后端:

Handlebars handlebars = new Handlebars();
handlebars.registerHelper("eq", ConditionalHelpers.eq);

前端:

{{#eq "a" "a"}}HURRA!{{/eq}}

来源:官方文档

于 2021-08-27T12:50:56.043 回答