Deixe o motor modelo FreeMarker do Apache para modelos de carga de pasta Recursos fora

Shivam Naik:

Eu criei um aplicativo de inicialização Primavera usando Spring Initilizr. Eu, então, incluída Apache's Freemarkermodelo de motor para carregar os modelos do meu projeto. O motor de cargas padrão modelos de: src/main/resources/templates/pasta.

Estou tentando carregar um simples index.ftlarquivo como modelo quando o usuário visita a página da web http://localhost:8080. Mas eu preciso carregar os modelos da src/main/webapp/pasta. Sempre que eu tento carregar os modelos de fora da resourcespasta, o modelo de motor falhar para encontrar os modelos.

Tenho passado por vários tutoriais e perguntas Stack Overflow. Nenhum responder a minha pergunta e eu estou preso com um 404 ERRORporque o motor não é capaz de encontrar os arquivos.

A estrutura do arquivo é:

|-src
|---main
|-----java
|-------MainApplication.java
|-------controllers
|---------ViewController.java
|-----resources
|-------static
|-------templates
|-------application.properties
|-----webapp
|-------index.ftl

Depois de um monte de escavação, me deparei com um post onde eles sugeriram mudar o local onde o modelo de motor pesquisa os arquivos. Ele sugeriu a adição seguintes linhas em application.properties:

spring.freemarker.enabled=true
spring.freemarker.template-loader-path=classpath:src/main/webapp/

Este não parece trabalho em tudo.

Estou tentando resolver página índice simples quando eu visitar a página da Web em http: // localhost: 8080 . Eu escrevi seguinte código para mapear o pedido HTTP em ViewController.java:

@RequestMapping("/")
public ModelAndView home(Model model)
{
    return new ModelAndView("index");
}

Não faço ideia se eu estou totalmente começando errado ou eu perdi alguma configuração.

user2683814:

De docs Primavera:

Não use o diretório / webapp src / main se o seu aplicativo é empacotado como um frasco. Embora este diretório é um padrão comum, ele funciona apenas com embalagens guerra, e é ignorado pela maioria das ferramentas de compilação quando você gerar uma guerra.

src/main/webapp está associado a arquivo da Web e serão embalados pelo plugin de guerra maven quando você gerar a guerra.

Supondo que você precisar de um local separado para manter modelos FTL e você ainda gostaria de pacote como jar você pode seguir os passos abaixo.

Adicione a entrada de recursos na construção em arquivo pom modo plug-in de recursos pode copiar esse diretório para classpath.

<build>
    <resources>
      <resource>
         <directory>src/main/webapp</directory>
     </resource>
    <resources>
<build>

Altere o caminho loader para ler a partir da raiz do classpath.

spring.freemarker.template-loader-path=classpath:

Se a sua apenas para modelos FTL gostaria de mudar o diretório para src/main/ftlsevitar confusão e atualizar o mesmo nos recursos.

ATUALIZAR

Na verdade, eu queria construir um pacote de implantação WAR

Você tem que usar plugin de guerra à guerra de construção. Adicione o plugin e mudar a embalagem para a guerra no pom.

Mais sobre a implementação tradicional: https://docs.spring.io/spring-boot/docs/current/reference/html/howto-traditional-deployment.html#howto-create-a-deployable-war-file

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=226389&siteId=1
Recomendado
Clasificación