Java.Scripting Template
Материал из Hivext Wiki
Java - Шаблонизация
Рассмотрен пример создания и выполнения шаблона через сервис Скриптинга.
Шаблоны EJS
Задача
Вывести в HTML таблице список пользователей. Таблица в две колонки: первая - имя, вторая - электронная почта. Пользователи хранятся в базе данных в типе users.
Решение
Для начала в базе данных создадим тип users с полями name и email и заполним объектами.
Далее создадим EJS шаблон с именем template/index, который будет принимать JSON объект с полями title - укажет название окна и users - массив объектов полученных из базы данных.
<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 с нужными параметрами и отдадим результат на клиент.
//////////////////////////////////////////////////
// Пример работы с шаблоном.
//////////////////////////////////////////////////
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 в браузере и получим результат


