Импорт одного файла FTL в другой файл FTL

Я создал один DIV внутри файла FTL, и теперь этот DIV содержит форму, сказав, что у меня есть другой файл FTL, и я хочу использовать первый div FTL во втором файле FTL, возможно ли это?

Deepak.ftl

<div id="filterReportParameters" style="display:none">
    <form method="POST" action="${rc.getContextPath()}/leave/generateEmpLeaveReport.json" target="_blank">
    <table border="0px" class="gtsjq-master-table">
        <tr>
            <td>From</td>
            <input type="hidden" name="empId" id="empId"/>
            <td>
            <input type="text" id="fromDate" name="fromDate" class="text ui-widget-content ui-corner-all" style="height:20px;width:145px;"/>
            </td>
            <td>Order By</td>
            <td>
                <select name="orderBy" id="orderBy">
                    <option value="0">- - - - - - - Select- - - - - - - -</option>
                    <option value="1">Date</option>
                    <option value="2">Leave Type</option>
                    <option value="3">Transaction Type</option>
                </select>
            </td>
        </tr>
        <tr>
            <td>To</td>
            <td><input type="text" id="toDate" name="toDate" class="text ui-widget-content ui-corner-all" style="height:20px;width:145px;"/>
        </tr>
        <tr>
            <td>Leave Type</td>
            <td>
                <select name="leaveType" id="leaveType">
                    <option value="0">- - - - - - - Select- - - - - - - -</option>
                    <#list leaveType as type>
                        <option value="${type.id}">${type.leaveType.description}</option>
                    </#list> 

                </select>
            </td>

        </tr>
        <tr>
            <td>Leave Transaction</td>
            <td>
                <select name="transactionType" id="transactionType">
                    <option value="0">- - - - - - - Select- - - - - - - -</option>
                    <#list leaveTransactionType as leaveTransaction>
                        <option value="${leaveTransaction.id}">${leaveTransaction.description}</option>
                    </#list> 

                </select>
            </td>
        </tr>
    </table>
    </form>

How do i use this div in another FTL file


person Deepak Kumar    schedule 18.05.2011    source источник


Ответы (2)


Если вы просто хотите включить div из одного шаблона freemarker в другой шаблон freemarker, вы можете извлечь общий div с помощью используя макрос. Например,

in macros.ftl:
<#macro filterReportDiv>
    <div id="filterReportParameters" style="display:none">
      <form ...>
    ..
      </form>
    </div>
 </#macro>

Затем в обоих ваших шаблонах freemarker вы можете импортировать macros.ftl и вызывать макрос с помощью чего-то вроде:

<#import "/path/to/macros.ftl" as m>
<@m.filterReportDiv /> 

Макросы — отличная функция FreeMarker, и их также можно параметризовать — они действительно могут сократить дублирование кода в ваших шаблонах.

person A Lee    schedule 18.05.2011
comment
Чтобы узнать, как для этой цели загружать шаблоны макросов, прочтите также главу руководства о загрузке шаблонов, расположенную по адресу freemarker.apache.org/docs/pgui_config_templateloading.html. Это также объясняет различные способы использования TemplateLoaders. Жаль, что в документации не упоминается класс StringTemplateLoader, который очень полезен, когда исходные коды шаблонов доступны как Strings. Также обратите внимание на ссылку об использовании импорта макросов на freemarker.apache.org/docs/ref_directive_import.html< /а>. - person Édouard Mercier; 16.11.2017

Похоже, вы ищете директиву <#include> — включенный файл будет обработан Freemarker, как если бы он был частью включаемого файла.

<#include "deepak.ftl"> будет работать, если оба файла FTL находятся в одном каталоге. Вы можете использовать относительные пути, если это не так.

person no.good.at.coding    schedule 18.05.2011