Spring Framework - problemas com estilos

Olá amigos.

Mais uma vez, estou garrada em algo que suponho ser simples. Tenho uma aplicação funcionando com:

Spring 2.0
Spring Annotations 1.1

Já criei alguns exemplos de controllers, eles funcionam perfeitamente, porém, não consigo exibir minhas folhas de estilo. Minha estrutura de diretórios está assim:

[web]
   |
    --- /META-INF
    --- /WEB-INF
           |
            --- /jsp
                   |
                    --- usuarioLista.jsp
            --- /lib
            --- /style
                   |
                    --- default.css
            --- applicationContext.xml
            --- web.xml
    --- index.jsp

Inicialmente, estava fazendo do modo trivial, dentro do arquivo usuarioLista.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html>

<head>
	<meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
	<meta name="description" content="description"/>
	....
	
	<link rel="stylesheet" type="text/css" href="../style/default.css" media="screen" />
	
	<title>
         ...
</head>

Porém, não exibia os estilos. Tentei encontrar o arquivo css digitando a url direto (/style/default.css), e não conseguiu acha-la. Tentei mudar o arquivo css para o mesmo diretório dos jsps, mas, não deu em nada.

Dei uma pesquisada, pareceu-me ser necessário uma configuração “especial” para usar estilos dentro do css. Segui o exemplo sugerido aqui:
http://www.springframework.org/docs/reference/mvc.html (sessão 13.7. Using themes)

Da seguinte forma: criei um arquivo com o nome theme.properties, coloquei dentro da raiz do classes. Nesse arquivo, fiz a seguinte declaração:

E, na página, alterei para:

<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
...

<head>
	....	
	<link rel="stylesheet" href="<spring:theme code="styleSheet"/>" type="text/css"/>
	
	<title>
        ....

Uma novidade, no console vi uma linha dizendo:

...
INFO  [ResourceBundleThemeSource] Theme created: name 'theme', basename [theme]
...

Mas, nada ainda de carregar o estilo (obs: sim, voltei o arquivo para dentro da pasta style depois dos testes). Também não consigo encontrar o arquivo pelo sua url.

Minhas dúvidas são:

  • Existe realmente um modo “especial” para utilizar folhas de estilo dentro do spring? Se sim, por que? Vi no link que citei que você precisa criar um contexto ThemeSource, mas, gostaria de saber por que.

  • Fiz algum passo incorreto na configuração?

Agradeço a todos pela ajuda.

[]'s

Tente assim:

&lt;link rel="stylesheet" type="text/css" href=&lt;%=request.getContextPath()%&gt;&quot;/style/default.css&quot; media=&quot;screen&quot; /&gt

o Metodo request.getContextPath() , retorna o caminho do contexto da sua aplicação

Oi ramilani12, valeu a dica.

heheh, na realidade não era bem esse o problema. O diretório de estilos estava dentro de web-inf, e não dentro do diretorio web. Nunca ia conseguir achar daquele jeito mesmo :lol:

Arrumando a estrutura, ficou assim:

 [web]
    |
    |--- /META-INF
    |--- /style
    |      |
    |      |--- /img
    |      |       |
    |      |       |--- (lista de imagens)
    |      |--- default.css
    |
    |--- /WEB-INF
    |       |
    |       |--- /jsp
    |       |       |
    |       |       |--- usuarioLista.jsp
    |       |       
    |       |--- /lib
    |       |--- applicationContext.xml
    |       |--- web.xml
    |
    |--- index.jsp 

Além de mover a pasta style, acrescentei algumas imagens tb. O arquivo default.css agora carrega normalmente, mas, esbarrei em outro pepino: não lê as imagens. Dentro de arquivo de estilos tenho, por exemplo:

...
body {
	background: #EEE url(img/bg.gif);
	color: #444;
	font: normal 62.5% "Lucida Sans Unicode",sans-serif;
	margin: 0;
}
...

Se digito a url …/style/img/bg.gif no browser, vejo normalmente a imagem, mas, na página jsp, quando acesso pelo controller a usuarioLista.jsp, não carrega nenhuma das imagens (mas os estilos sim… q coisa) :frowning:

Edit:

kkk, para quem acompanhou a sequencia de “edits” que fiz no post, tava funcionando direito no FF, seguindo a dica do ramilani12, mas, não no IE. Então, fiz do modo trivial:

<link rel="stylesheet" type="text/css" href="../style/default.css" media="screen" />

Aí tá funcionando ok, tanto estilo quanto imagens. Bem que tava achando absurdo ter que mudar forma de declaração de estilo dentro do Spring (uma coisa nem tem nada a ver com a outra).

A declaraçõa de estilos que mencionei no primeiro pots só faz sentido se vc tiver vários estilos pro seu site, se for um só, pode faezr como de costume.

Galera, desculpem aí o incomodo. Tópico resolvido!

Valeu!