Java.Scripting Template

Материал из Hivext Wiki

Перейти к: навигация, поиск

Java - Шаблонизация

Рассмотрен пример создания и выполнения шаблона через сервис Скриптинга.

Шаблоны EJS

Задача

Вывести в HTML таблице список пользователей. Таблица в две колонки: первая - имя, вторая - электронная почта. Пользователи хранятся в базе данных в типе users.

Решение

Для начала в базе данных создадим тип users с полями name и email и заполним объектами.

Изображение:Template_users.png

Далее создадим EJS шаблон с именем template/index, который будет принимать JSON объект с полями title - укажет название окна и users - массив объектов полученных из базы данных.

Шаблон template/index, создающий HTML таблицу

<html>
<head>
 <title><%= title %></title>
</head>
<body>
<h2><%= title %></h2>
<table border="1">
<% for(var i=0; i<users.length; i++) {%>
 <tr>
 <td><%= users[i].name %></td>
 <td><%= users[i].email %></td>
 </tr>
<% } %>
</table>
</body>
</html>

Создадим основной скрипт с названием index, в нем мы запросим объекты из базы данных, вызовем шаблон template/index с нужными параметрами и отдадим результат на клиент.

Скрипт index, вызывающий шаблон template/index

//////////////////////////////////////////////////
// Пример работы с шаблоном.
//////////////////////////////////////////////////

import java.util.Map;
import java.util.HashMap;

public class TemplateSample {
 public static void main(String[] args) {

    // Укажем ноде что данные отдаются в html формате.
    hivext.local.SetHeader("Content-Type", "text/html");

    String appid = hivext.local.GetParam("appid");
    String signature = hivext.local.GetDeviceSignature();

    // Запрашиваем объекты users из базы данных.
    Response users = hivext.data.base.GetObjects(appid, signature, "users");

    if(users.getResult() == 0) {

     Map tdata = new HashMap();
     tdata.put("title", "Hello world");
     tdata.put("users", users.get("objects"));

     // Вызов шаблона template/index и передача данных.
     Response template = hivext.development.scripting.eval(appid, signature, "template/index", tdata);

     if (template.getResult() == 0) hivext.local.ReturnResult(template.get("response"));
     else hivext.local.ReturnResult(template.getError());
     
     return;
    }

    hivext.local.ReturnResult(users.getError());

 }
}​

Теперь просто вызовем скрипт index в браузере и получим результат

Изображение:Template_result.png

Личные инструменты