2010-06-02 5 views
1

Avec Struts2 Je ne peux pas trouver un moyen de servir un CSS statique: -/Newbie question, mais je ne pouvais pas trouver une réponse sur Internet:contenu statique avec Struts2: erreur Tomcat 404

Le fichier CSS est static/styles.css dans mon fichier WAR.

Tomcat répond avec 404 quand je demande http://server/myapp/static/styles.css

Mais il fonctionne si je mets styles.css à la racine de la guerre et demande http://server/myapp/styles.css

J'ai essayé d'ajouter ce qui suit à mon struts.xml dans le seul paquet, mais encore 404:

<action name="/static/*"> 
    <result>/static/{1}</result> 
</action> 

Ou comme un deuxième paquet:

<package name="static" extends="struts-default" namespace="/static"> 
    <action name="/static/*"> 
    <result>/static/{1}</result> 
    </action> 
</package> 
+0

Votre répartiteur Struts2 est-il défini sur/*? Avez-vous lu ceci? http://struts.apache.org/2.1.8/docs/static-content.html – leonbloy

+0

J'avais lu cette page, oui. Le premier paragraphe explique comment le contenu statique est activé par défaut. Le deuxième paragraphe explique comment écrire mon propre chargeur (pas nécessaire). Le 3ème paragraphe explique que mon code devrait fonctionner. Le 4ème paragraphe explique comment éviter de servir (pas nécessaire). Résumé: mon code devrait fonctionner, selon cette page. Cependant, cette page ne parle pas de "/ *". –

Répondre

2

Ceci est une très vieille question, mais comme il n'y avait pas de réponse et que je me débattais avec le même problème, je suis sûr que d'autres pourraient bénéficier d'une solution. Struts fournit un contenu statique par défaut uniquement à partir des fichiers JAR, mais pas des sous-répertoires en dehors des fichiers JAR. Donc, vous devez ajouter à votre struts.xml:

<constant name="struts.action.excludePattern" value=".*/static/.*" /> 

qui empêche tout dans le dossier « statique » d'être traité comme une action.

0

Vous n'avez rien besoin d'inclure (action ou package). Struts2 sert de contenu statique par défaut.

Vérifiez si, après le déploiement de votre fichier war, la ressource style.css existe dans le chemin que vous pensez.

+0

C'est faux, voir la réponse de Santeri – Timo