FreeMarker соответствует анализу различных структур данных

Java

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>Будет сообщено об ошибке, поэтому вы должны сначала присвоить значение, а затем прокрутить данные.Файл печатается следующим образом