Как я могу отобразить все значения каждого jsonObject в jsonArray с помощью движка Pebble Templetes и Java с библиотекой vertx? - PullRequest
0 голосов
/ 19 июня 2020

Это мой шаблон:

 <tbody id="byCountry">
         {% for dataFilm in film %}
             <tr>
                <td>{{Date}}</td>
                <td>{{Title}}</td>
                <td>{{MainActor}}</td>                    
            </tr>
        {% endfor %}
        </tbody>
Но должен ли я где-то определять "dataFilm"? Это мой код Java с vertx:
summary.onComplete(jsonObjectAsyncResult -> {

            if (jsonObjectAsyncResult.succeeded()) {
               JsonArray summaryArray = jsonObjectAsyncResult.result().getJsonArray("Films");
                JsonObject filmInfo = new JsonObject();
                for( int i = 0; i<summaryArray.size(); i++){
                    filmInfo.put("summaryArray",summaryArray)
                            .put("Date", summaryArray.getJsonObject(i).getString("Date"))
                            .put("Title", summaryArray.getJsonObject(i).getString("Title"))
                            .put("MainActor", summaryArray.getJsonObject(i).("MainActor"));
                 engine.render(filmInfo, "webroot/templates/films.peb", res ->{
                        if (res.succeeded()) {
                             routingContext.response()
                                 .end(res.result());
                        } else {
                            routingContext.fail(res.cause());
                        }
                 });

Проблема здесь в том, что когда я пытался рендерить, рендерил только первый фильм или последний фильм, потому что мне нужно завершить ответ движком .render ... Есть идеи, как это сделать?

1 Ответ

0 голосов
/ 21 июня 2020

Я не знаю шаблонов гальки, но, похоже, вы испортили свой лог обработки c, попробуйте что-нибудь вроде этого

if (jsonObjectAsyncResult.succeeded()) {
        JsonArray summaryArray = jsonObjectAsyncResult.result().getJsonArray("Films");
        List<Map<String, Object>> list = new ArrayList<>();
        for(int i=0; i<summaryArray.size(); i++) {
             list.add(summaryArray.getJsonObject(i).getMap());
        }
        Map<String, Object> templateVars = new HashMap<>();
        templateVars.put("films", list);

        engine.render(templateVars, "webroot/templates/countries.peb", res ->{
                if (res.succeeded()) {
                        routingContext.response().setStatusCode(200).end(res.result());
                } else {
                        routingContext.fail(res.cause());
                }
        });
}

и код шаблона:

 <tbody id="byCountry">
 {% for dataFilm in films %}
     <tr>
        <td>{{dataFilm.Date}}</td>
        <td>{{dataFilm.Title}}</td>
        <td>{{dataFilm.MainActor}}</td>                    
    </tr>
{% endfor %}
</tbody>```
...