Boa Tarde, Estou com um projeto inicial, mas logo esbarrei em um problema de que, somente a página inicial encontra os arquivos da pasta "static", e quando me redireciono para um nova página, o CSS e JS não são encontrados.
// TEMPLATE
<%@ tag language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ attribute name="extraCss" fragment="true" %>
<!DOCTYPE html>
<html>
<head>
<!--Import Google Icon Font-->
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"/>
<!--Import materialize.css-->
<link type="text/css" rel="stylesheet" href="../materialize/css/materialize.min.css" media="screen,projection"/>
<jsp:invoke fragment="extraCss"></jsp:invoke>
<c:url value="../materialize/js" var="jsPathMaterialize" />
<c:url value="../css" var="cssPath" />
<link type="text/css" rel="stylesheet" href="${cssPath}/rodape.css"/>
<script type="text/javascript" src="${jsPathMaterialize}/jquery.js"></script>
<script type="text/javascript" src="${jsPathMaterialize}/materialize.min.js"></script>
<!--Let browser know website is optimized for mobile (Otimiza o layout para mobile - materialize)-->
<meta name="viewport" http-equiv="Content-Type" content="width=device-width, initial-scale=1.0; text/html; charset=UTF-8"/>
</head>
<body>
<%@ include file="/WEB-INF/views/cabecalho.jsp" %>
<jsp:doBody/>
<%@ include file="/WEB-INF/views/rodape.jsp" %>
</body>
</html>
// INDEX
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib tagdir="/WEB-INF/tags" prefix="tags"%>
<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
<tags:pageTemplate>
<jsp:attribute name="extraCss">
<link type="text/css" rel="stylesheet" href="css/estilo.css"/>
</jsp:attribute>
<jsp:body>
<main>
<div>
<ul class="grid-teste">
<li class="grid-teste-link">
<a href="${s:mvcUrl('PC#formularioPedido').build()}">
<i class="large material-icons">note_add</i>
<span>Adicionar Pedidos</span>
</a>
</li>
<li class="grid-teste-link">
<a href="#!">
<i class="large material-icons">offline_pin</i>
<span>Finalizar Pedidos</span>
</a>
</li>
<li class="grid-teste-link">
<a href="#!">
<i class="large material-icons">search</i>
<span>Buscar Pedidos</span>
</a>
</li>
<li class="grid-teste-link">
<a href="#!">
<i class="large material-icons">settings</i>
<span>Configurações</span>
</a>
</li>
</ul>
</div>
</main>
</jsp:body>
</tags:pageTemplate>
// FORMULARIO
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib tagdir="/WEB-INF/tags" prefix="tags"%>
<tags:pageTemplate>
<main>
<span>Formulário Pedidos</span>
</main>
</tags:pageTemplate>
// CABEÇALHO
<nav>
<div class="nav-wrapper green accent-4">
<a href="#" class="brand-logo">Logo</a>
<ul id="nav-mobile" class="right hide-on-med-and-down">
<li><a href="#">Sass</a></li>
<li><a href="#">Components</a></li>
<li><a href="#">JavaScript</a></li>
</ul>
</div>
</nav>
// CONTROLLER
@Controller
@RequestMapping("/pedidos")
public class PedidoController {
@GetMapping
public String formularioPedido(){
return "formulario";
}
}
[OBS]: - Estou usando MATERIALIZE - Todas as VIEWs utilizam o template
[ERRO]: - Quando estou no INDEX.jsp carrega corretamente o CSS e JS, mas quando clico para ir para a view do FORMULARIO.jsp, o CSS e JS não são carregados (Verificando no CONSOLE do NAVEGADOR ele está procurando esse arquivos dentro da pasta "pedidos" o que não é correto, pois "pedidos" é apenas a MAPPING, e ele está vendo como uma pasta)
[SOLUÇÃO ATÉ O MOMENTO / GAMBIARRA] - Para resolver eu precise voltar 1 nível "../" nas chamadas do CSS e SCRIPT (Como feito no template), e assim funcionando corretamente.
Só que se por exemplo, eu criar um MAPPING "pedidos/validos/"
Eu teria que botar pra voltar 2 níveis nas chamadas do CSS e JS
==> Gostaria de saber como posso resolver esse problema ?
==> Alguma dica inicial para aplicar nesse pequeno projeto ?
==> Como funciona esse "properties" ? spring.mvc.static-path-pattern=/**
Já agradeço pela atenção de todos.