0

我想开发一个由多个独立组件(自定义扩展)组成的 Quarkus 应用程序。现在,我需要每个扩展都有自己的qute模板;我怎样才能做到这一点?!

4

1 回答 1

0

这是一个解决方案:

resources/templates/hello.html这个类放在deployment你的自定义扩展的一部分。

import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.util.concurrent.CompletionStage;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import io.quarkus.qute.Engine;
import io.quarkus.qute.Template;
import org.apache.commons.io.IOUtils;

@Path("hi")
public class TestQuteTemplateInDeployment {

    public Template getTemplateFromFile(String path2template) {
        Engine engine = Engine.builder().addDefaults().build();
        ClassLoader classLoader = getClass().getClassLoader();
        String content = "<!doctype html><html></html>";
        try {
            InputStream inputStream = classLoader.getResourceAsStream(path2template);
            content = IOUtils.toString(inputStream, StandardCharsets.UTF_8);
        } catch (Exception e) {
            ;
        }
        Template helloTemplate = engine.parse(content);
        return helloTemplate;
    }

    @GET
    @Produces(MediaType.TEXT_HTML)
    public CompletionStage<String> get() {
        return getTemplateFromFile("templates/hello.html").data("msg", "Hi! I'm Here.").renderAsync();
    }

}

于 2021-05-04T08:25:35.737 回答