FreeMarker соответствует анализу различных структур данных
FreeMarker — это механизм шаблонов, разработанный на Java, и общий инструмент для создания текста на основе шаблонов. FreeMarker предназначен для создания веб-страниц HTML, особенно приложений, основанных на шаблоне MVC. Хотя FreeMarker имеет некоторые возможности программирования, отображаемые данные обычно подготавливаются программой Java, страница генерируется FreeMarker, а подготовленные данные отображаются с помощью шаблона.
Как работает FreeMarker просто
Так FreeMarker может анализировать различные структуры данных, хранящиеся в Java, а затем выводить в указанный формат через файлы шаблонов. Далее мы кратко объясним, как FreeMarker анализирует синтаксис различных структур данных.
Анализ исходных данных
код показывает, как показано ниже
String name = "World!";
FreemarkerUtil util = new FreemarkerUtil();
Map<String,Object> resultMap = new HashMap<>();
resultMap.put("name",name);
util.fprint("FreemarkerTest.ftl",resultMap,"FreemarkerTest");
Если вы хотите ввести простые базовые данные в файл шаблонаFreemarkerTest.ftl
в файле шаблонаFreemarkerTest.ftl
Просто напишите следующее
name:${name}
Вы увидите вывод в файле FreemarkerTest в файле
Парсинг коллекций
Список коллекции
код показывает, как показано ниже
List<String> list = new ArrayList<>();
list.add("Mazi");
list.add("LaoLiu");
resultMap.put("users",list);
Если вы хотите просмотреть коллекцию списков в приведенном выше коде, вы можете написать его непосредственно в файле шаблона следующим образом.
<#list users as item>
name:${item}
</#list>
Где users — это значение ключа, переданное в файл шаблона, элемент просто получает псевдоним, вы можете делать все, что хотите, мы можем увидеть следующую информацию в сгенерированном файле шаблона
Что если в коллекции хранятся объекты? Например, следующим образом
List<User> userList = new ArrayList<>();
userList.add(new User("Mazi",18));
userList.add(new User("Mazi2",18));
resultMap.put("userDatas",userList);
файл шаблона
<#list userDatas as user>
name: ${user.name}
age: ${user.age}
---------------------
</#list>
Файл печатается следующим образом
Коллекция карт
Существует следующая структура данных, код Java выглядит следующим образом
Map<String,String> map = new HashMap<>();
Map<String,Object> resultMap = new HashMap<>();
map.put("name","Mazi");
map.put("age","18");
resultMap.put("map",map);
Если вы хотите вынуть значение ключа и значение на карте в файле шаблона, вам нужно всего лишь написать в файле шаблона следующее:
<#list map?keys as key>
key: ${key}
value: ${map[key]}
</#list>
Вывод в файле следующий
Комплексный анализ структуры данных
Мы можем анализировать данные в файле шаблона для простых базовых типов данных и простых коллекций, поэтому давайте посмотрим, что, если это разбор сложной структуры данных? НапримерList<Map<String,String>>
илиMap<String,List<Strinbg>>
Как разобрать такую вложенную коллекцию?
Например, у нас есть структура данных «один ко многим».
Код Java упоминается ниже
Map<String,Object> resultMap = new HashMap<>();
Map<String,List<User>> testMap = new HashMap<>();
List<User> listOne = new ArrayList<>();
List<User> listTwo = new ArrayList<>();
listOne.add(new User("王大麻子",11));
listOne.add(new User("李二狗",11));
listTwo.add(new User("郑老六",11));
listTwo.add(new User("吴大棒槌",11));
testMap.put("classA",listOne);
testMap.put("classB",listTwo);
resultMap.put("data",testMap);
Так что же следует парсить в файле шаблона следующим образом? следующим образом
<#list data?keys as classKey >
班级: ${classKey}
成员如下:
<#assign users = data[classKey]>
<#list users as user>
name: ${user.name}
age: ${user.age}
</#list>
</#list>
Тег назначения выполняет роль назначения. В настоящее время, если вы непосредственно<#list data[classKey] as user>
Будет сообщено об ошибке, поэтому вы должны сначала присвоить значение, а затем прокрутить данные.Файл печатается следующим образом