web-dev-qa-db-fra.com

Écrire un modèle de marqueur libre dans la sortie de chaîne

J'aimerais que le modèle de gabarit freemarker soit affiché dans String. J'ai un fichier de gabarit de gabarit libre commonTemplate.ftl.

<div>
    <div>
        <h1>${userDetails.name}</h1>
        ${userDetails.birthday}  ${userDetails.id}
    </div>
</div>

Et le code Java qui renseigne le modèle et imprime la sortie sur la console App.Java.

public class App {

    private Service service = new Service();


    public void execute() {
        Configuration configuration = prepareConfiguration();
        // Load templates from resources/templatess.
        configuration.setClassForTemplateLoading(App.class, "/templates");

        try {
            Template template = configuration.getTemplate("commonTemplate.ftl");

            // Console output
            Writer out = new OutputStreamWriter(System.out);
            template.process(prepareData(), out);
            out.flush();

        } catch (IOException | TemplateException e) {
            throw new RuntimeException(e);
        }
    }

    private Configuration prepareConfiguration() {
        Configuration configuration = new Configuration(Configuration.VERSION_2_3_23);
        configuration.setDefaultEncoding("UTF-8");
        configuration.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER);
        configuration.setLogTemplateExceptions(false);
        return configuration;
    }

    private Map<String, Object> prepareData() {
        Model model = service.getModel();
        Map<String, Object> data = new HashMap<String, Object>();
        data.put("userDetails", model.getUserDetails());
        return data;
    }
}

Cela fonctionne pour la sortie de la console.

<div>
    <div>
        <h1>john Doe</h1>
        1990-01-10T12:11+01:00[Europe/Prague]  1
    </div>
</div>
6
Yan Khonski

J'espère que ça marche.

// write the freemarker output to a StringWriter 
StringWriter stringWriter = new StringWriter();
template.process(prepareData(), stringWriter);

// get the String from the StringWriter
String string = stringWriter.toString();
20
Sainath Batthala
    try {
        Template template = configuration.getTemplate("commonTemplate.ftl");
        Writer out = new StringWriter();
        template.process(prepareData(), out);
        System.out.println(out.toString());

    } catch (IOException | TemplateException e) {
        throw new RuntimeException(e);
    }
1
Yan Khonski