有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

模板获取handlebar java中迭代器列表的长度

Java代码--

List<String> table = Lists.newArrayList();
........

模板代码--

 {{#each table}}
    <td height="28" width="27"><h1> {{table.length}}</h1></td>
    <td height="28" width="27"><h1> {{table.size}}</h1></td>
    <td height="28" width="27"><h1> {{table.count}}</h1></td>
    <td height="28" width="27"><h1> {{../../table.length}}</h1></td>
    <td height="28" width="27"><h1> {{../table.length}}</h1></td>
 {{/each}}

我正在尝试获取车把模板中列表的长度。但是我试过上面的那些线都不起作用!我想知道我哪里做错了在handlebar java中获取迭代器长度的正确方法是什么

提前谢谢


共 (2) 个答案

  1. # 1 楼答案

    我认为问题在于列表上的size方法不是getSize(),它只是size()。而且default句柄Java“[使用]JavaBean方法(即公共getXxx和isXxx方法)和Map作为值解析器”,所以像size()这样的方法不起作用

    基本上,您希望构建一个包含MethodValueResolver的上下文,该上下文处理任何公共方法

    here

    Context context = Context
        .newBuilder(model)
        .resolver(MethodValueResolver.INSTANCE)
        .build();
    

    此外,multiple value resolvers example


    或者,由于MethodValueResolver有点过火,也许实际上最好只是显式地向下传递长度,正如您在评论中提到的那样

  2. # 2 楼答案

    下面是一个javascript/html解决方案。基本上,您必须获取{{#each}之外的长度。。。{{/每个}}

    &13; 第13部分,;
    <!DOCTYPE html>
    <html>
    <head>
        <title>Page Title</title>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/2.0.0/handlebars.js"></script>
    </head>
    <body>
    
    <script id="t" type="text/x-handlebars">
        <p>My table length is {{table.length}}</p>
        {{#each table}}
        <p>Stay for some {{a}} and {{b}}</p>
        {{/each}}
    </script>
    
    <script>
        Handlebars.registerHelper('testHelper', function(ignore, opt) {
            var results = '';
            data.forEach(function (item) {
                results += opt.fn(item);
            });
            return results;
        });
    
        var table = [
            { a: 'tea', b: 'cookie' },
            { a: 'coffee', b: 'cake' }
        ];
        var t = Handlebars.compile($('#t').html());
        $('body').append(t({ table: table }));
    </script>
    </body>
    </html>
    和#13;
    和#13;