好久没有写东西了,可能是自从毕业就越来越懒了吧,原来还想每周更新点自己的技术的总结,现在也断了,也就想到哪里写到那里吧,今天就说说Handlenars的使用的,由于业务需要,想要使用Handlenars进行模板替换。提起Handlebars,前端工程师可能不陌生,甚至有人认为这个东西在网上搜教程简直是简单的不能再简单了,不过我是一个Java工程师,我要说的Handlbars是一个Java版的模板替换引擎,不知道大家有木有试过,感兴趣的可以试一试。
网上有很多Handlebars的功能介绍,我就不详细赘述了,虽然我要说的是Handlebars作为Java模板替换引擎,但是功能也都大体一样,可能很多人用不上,因为有太多模板引擎要比这个好用,但是用于自己以后使用吧!!!!
在这里不得不说GitHub是个好东西,我要说的Handlebars也是来源于GitHub的源码,吼吼...............我只是用了其中的一小部分的功能,如果需要更深入的研究奉上Github源码地址:https://github.com/jknack/handlebars.java
项目需要jar包: antlr4-runtime-4.5.jar;commons-lang3-3.4.jar;handlebars-2.0.0.jar;rhino-1.7R4.jar;slf4j-api-1.7.12.jar
部分代码:
private static Handlebars handlebars = new Handlebars();
public static String replace(String handlebarsStr, Map<String, Object> obj) {
String result = "";
try {
Template template = handlebars.compileInline(handlebarsStr);
//此处为注册Handlebars自定义helper
HandlebarsHelper.registerAllHelpers(handlebars);
result = template.apply(obj);
return result;
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
自定义Helper:
public static void registerAllHelpers(Handlebars handlebars) {
handlebars.registerHelper("if_eq", new Helper<Object>() {
public CharSequence apply(final Object context,
final Options options) throws IOException {
CharSequence result = "";
String right = context.toString();
String left = options.hash.get("compare").toString();
if ((right != null) && (left != null)) {
if (right.equals(left)) {
result = options.fn(context);
} else {
result = options.inverse(context);
}
return result;
} else {
return null;
}
}
});
handlebars.registerHelper("unless_eq", new Helper<Object>() {
public CharSequence apply(final Object context,
final Options options) throws IOException {
CharSequence result = "";
String right = context.toString();
String left = options.param(0);
if ((right != null) && (left != null)) {
if (right.equals(left)) {
result = options.inverse(context);
} else {
result = options.fn(context);
}
return result;
} else {
return result;
}
}
});
}
以上代码可以完成一个的简单替换,测试结果:
public static void main(String[] args) {
String handlebarsStr= "{{name}} 您好: 您有{{count}} 信息";
Map map = new HashMap<String ,Object>() ;
map.put("name", "zhanghg") ;
map.put("count", 10) ;
String ste = HandlebarsUtils.replace(handlebarsStr, map);
System.out.println(ste);
}
测试结果:
转载自原文链接, 如需删除请联系管理员。
原文链接:关于Handlebars.java的模板引擎的使用,转载请注明来源!