powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / В freemaker'е есть подобие execute immediate?
1 сообщений из 1, страница 1 из 1
В freemaker'е есть подобие execute immediate?
    #38253751
avp.mk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть поле (sub) куда подставляется текст, которое в свою очередь тоже содержит поля, которые надо заменить.
Возможно?
Или придётся сначала merge'ить поле sub, и результат писать в отчёт?

TestTemplating.java
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
package testtemplating;

import fr.opensagres.xdocreport.core.XDocReportException;
import fr.opensagres.xdocreport.document.IXDocReport;
import fr.opensagres.xdocreport.document.registry.XDocReportRegistry;
import fr.opensagres.xdocreport.template.IContext;
import fr.opensagres.xdocreport.template.TemplateEngineKind;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.Charset;

public class TestTemplating {

    private static final String //
            ROOT = "C:\\Documents and Settings\\User\\Рабочий стол\\",
            FILE_IN    = ROOT + "test.docx",
            FILE_INSUB = ROOT + "sub.xml",
            FILE_OUT   = ROOT + "out.docx";

    public static void main(String[] args) throws IOException, XDocReportException {
        XDocReportRegistry registry = XDocReportRegistry.getRegistry();

        IXDocReport reportMain = registry.loadReport(new FileInputStream(FILE_IN), TemplateEngineKind.Freemarker);

        String sub = readFile(FILE_INSUB, Charset.forName("utf8"));

        IContext data = reportMain.createContext();
        data.put("obt", 1);
        data.put("sub", sub);

        reportMain.process(data, new FileOutputStream(FILE_OUT));
        System.out.println("Обратка завершена");
    }

    private static String readFile(String fileName, Charset charset) throws IOException {
        FileInputStream fis = new FileInputStream(fileName);
        BufferedReader reader = new BufferedReader(new InputStreamReader(fis, charset));
        StringBuilder sb = new StringBuilder(fis.available());
        int i;
        while ((i = reader.read()) != -1) {
            sb.append((char) i);
        }
        return sb.toString();
    }
}


test.docx${obt}
${что_то_типа_ execute_immediate sub}

sub.xmlstart subDocument
${obt}
end subDocument
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / В freemaker'е есть подобие execute immediate?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]