我正在使用Mustache Template Engine in Java
Spring mvc 3
+ Maven
,模板正常呈现,但现在我想为我的网站添加一些自定义功能。假设我有300个字符,现在我只想显示50个字符,因此需要truncate
文本,截断后内容以...
结尾。所以为此,我必须创建一些自定义功能。所以我很困惑,我需要如何以及在哪里创建自定义帮助函数。我可以在标签内部的HTML页面上创建这些类型的函数,或者我必须在java类文件上创建函数。请给我一些建议。
HTML模板:
<ul>
{{#items}}
<li>{{name}} : {{detail}}</li>
{{/items}}
<ul>
Javascript截断功能
function truncate(str) {
console.log(str);
if (str.length > 40) {
return str.slice(0, 40) + "...";
} else {
return str;
}
}
答案 0 :(得分:0)
您可以在Mustache中使用函数。
_html=mustache.render(mytemplate,
{rows:therows,
nametruncated: function() {return 'hello from m'}
);
在您的模板中,您可以使用:
<div>{{nametruncated}}</div>
现在您可以使用计数器值:
_html=mustache.render(mytemplate,
{rows:therows,
nametruncated: function() {
//you get the right member of you array
str=yourarray[counter]['mystring']
if (str.length > 40) {
return str.slice(0, 40) + "...";
} else {
return str;
}
});
在模板中
{#行}
{{aproperty}}</br>
{{nametruncated}}
{/行}
答案 1 :(得分:0)
我个人喜欢...
private static class Scope {
public String name;
public Function<String, String> capitalize() { // the magic is here
return return (obj) -> ("_" + obj + "_").toUpperCase();
}
}
public String renderTemplate() {
MustacheFactory mf = new DefaultMustacheFactory();
Mustache mustache = mf.compile("template.mustache");
StringWriter stringWriter = new StringWriter();
Scope scope = new Scope();
scope.names = "boris";
mustache.execute(stringWriter, scope);
return stringWriter.toString();
}
带有模板。
{{#capitalize}} {{ name }} {{/capitalize}}