2013-07-05 4 views
2

Je ne connais pas encore les servlets et les modèles Velocity et j'essaie de lier mon modèle .vm à un fichier .css. Le fichier .vm et le fichier css se trouvent dans le répertoire ROOT de Tomcat. Le fichier lui-même affiche bien, mais le CSS ne fonctionne pas.Lien vers le fichier css du modèle Velocity

Le lien suivant ne fonctionne pas:

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

ne fait passer le nom de fichier comme un attribut:

String stylesheet = "style.css"; 
req.setAttribute("stylesheet", stylesheet); 

et référencement en tant que tel:

<link rel="stylesheet" type="text/css" href="$stylesheet"/> 

Aussi, je ne peut pas afficher le fichier css dans le navigateur, même s'il est définitivement là.

web.xml contient les éléments suivants:

<!-- register servlet --> 
<servlet> 
    <servlet-name>testvmservlet</servlet-name> 
    <servlet-class>net.myapp.app.TestVMServlet</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>testvmservlet</servlet-name> 
    <url-pattern>/velocity.service</url-pattern> 
</servlet-mapping> 

<!-- mapping all .vm files to velocity servlets --> 
<servlet> 
    <servlet-name>velocity</servlet-name> 
    <servlet-class>org.apache.velocity.tools.view.servlet.VelocityViewServlet</servlet-class> 

</servlet> 
<servlet-mapping> 
    <servlet-name>velocity</servlet-name> 
    <url-pattern>*.vm</url-pattern> 
</servlet-mapping> 

Dois-je référencer le fichier css par rapport à l'application ou par rapport à la vitesse?

J'ai depuis ajusté un de mes correspondances de servlet de:

<servlet-mapping> 
    <servlet-name>startupservlet</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 

à:

<servlet-mapping> 
    <servlet-name>startupservlet</servlet-name> 
    <url-pattern>/foo</url-pattern> 
</servlet-mapping> 

et maintenant le css fonctionne très bien. Mais je ne suis pas sûr de savoir pourquoi cette cartographie avait un effet. Si je comprends bien, <url-pattern>/</url-pattern> ne s'applique que si aucun chemin n'a été spécifié, cependant, une demande style.css devrait constituer un chemin?

Répondre

2

Je crois que votre problème est la mise en correspondance de servlet/

Par défaut, les cartes Tomcat/à sa DefaultServlet qui sert du contenu statique. Lorsque vous mappez/à votre servlet, il semble remplacer le comportement DefaultServlet entier. Il agit comme un mappage/* bien qu'il semble qu'il ne doive gérer que/

Je ne suis pas sûr que ce soit un bug ou une fonctionnalité. :)

Une solution peut être de changer votre mappage/servlet en/home, puis d'utiliser un mappage de fichier de bienvenue pour faire référence à cela.

Questions connexes