Quantcast
Channel: Programação - GUJ
Viewing all articles
Browse latest Browse all 33093

Resolver link css Thymeleaf em um projeto externo

$
0
0

@Tiagoguimaraes95 escreveu:

Pessoal, Boa Noite!

A minha dúvida é a seguinte: Estou fazendo um pequeno Framework relativo a envio de emails para ser utilizada pela comunidade. Nesse Framework há a possibilidade de envio de emails pré-definidos. Para resolver os arquivos HTML (no meu projeto externo .jar) usando o Thymeleaf estou utilizando o seguinte código:

     //Aqui eu construo um Template Resolver específico (FileTemplateResolver) e adiciono ele ao
     // SpringTemplateEngine já criado (pelo Spring Boot) com a prioridade mais baixa,
     // para resolver os arquivos HTML que estão no meu projeto externo na pasta
     // resources/templates/mailTemplates/templatesPreDefined.
    @PostConstruct 
    public void customTemplateResolver(){ 

        try { 

            templateEngine.addTemplateResolver(getTemplateResolver()); 

        } catch (Exception e) { 

            LOGGER.debug("Não foi possível definir um template resolver customizado para que seja utilizado" 
                    + " os templates pré definidos.", e); 

        } 

    } 

    private ITemplateResolver getTemplateResolver() throws CustomTemplateResolverException { 

        FileTemplateResolver resolver = new  FileTemplateResolver(); 

        resolver.setPrefix(getPrefixTemplateResolver());         
        resolver.setSuffix(".html"); 
        resolver.setTemplateMode("HTML5"); 
        resolver.setCharacterEncoding("UTF-8"); 
        resolver.setCacheable(false); 
        resolver.setOrder(Ordered.LOWEST_PRECEDENCE); 

        return resolver; 
    } 

    private String getPrefixTemplateResolver() throws CustomTemplateResolverException{ 

        try {           

            return getClass().getProtectionDomain().getCodeSource().getLocation().toURI().getPath() 
                    + "templates" + BARRA + "mailTemplates" + BARRA + "templatesPredefined" + BARRA; 

        } catch (URISyntaxException e) { 

            LOGGER.debug("Não foi possível obter o prefixo (classpath) do template resolver.", e); 

            throw new CustomTemplateResolverException("Não foi possível obter o prefixo (classpath) do template resolver.", e); 

        } 

    } 

    //No código abaixo é onde eu processo os arquivos HTML do meu projeto externo. 
    @Autowired 
    private TemplateEngine templateEngine; 

    @Autowired 
    private Context context; 

    templateEngine.process("mailTemplate", context)

Isso funciona muito bem, porém afim de deixar o código mais organizado não gostaria de colocar todos os css dentro do HTML e sim em um arquivo externo que venho importá-lô depois. Porém quando utilizo o código abaixo (th:href="@{/css/app/app.css}") recebo o seguinte erro: Link base "/css/app/app.css" cannot be context relative (/) or page relative unless you implement the org.thymeleaf.context.IWebContext interface (context is of class: org.thymeleaf.context.Context) (mailTemplate:4)

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml"    xmlns:th="http://www.thymeleaf.org">
<head>
//Eu preciso importar esse "app.css" que está na pasta 
//resources/static/css/app/app.css do meu projeto externo. 
<link id="appcss" rel="stylesheet" th:href="@{/css/app/app.css}" />
</head>
<body>
    
Mail Template
</body>
</html>

Esse meu projeto irá rodar como uma biblioteca externa ao projeto principal, portanto o contexto e o path que tenho é do projeto principal. Como faço para definir uma pasta de resources e fazer com que o thymeleaf identifique a mesma na importação de recursos em um projeto que irá executar como uma biblioteca (.jar)?

Obs: Os dois projetos (principal e secundário) estão usando o Spring Boot 1.4 e consequentemente a versão agregada do Thymeleaf.

Desde já agradeço a atenção de todos. Muito Obrigado!

Mensagens: 1

Participantes: 1

Ler tópico completo


Viewing all articles
Browse latest Browse all 33093


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>