IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement Web en Java Discussion :

Apache Tiles/spring: CSS non appliquée sur certaines pages


Sujet :

Développement Web en Java

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2016
    Messages : 2
    Points : 5
    Points
    5
    Par défaut Apache Tiles/spring: CSS non appliquée sur certaines pages
    Bonjour,

    Je suis débutant JEE et je rencontre un problème avec Spring MVC et Apache Tiles 3 que je n'arrive pas à résoudre malgré mes nombreuses heures de recherches sur les différents tutoriels et forums. Je vous prie de m'excuser si je n'emploie pas forcément les bons termes dans mes explications , mais je vais essayer d'être le plus clair possible.

    Lorsque j'accède à une page via un controller dédié à cette page(URL http://localhost:8080/MyApp/test) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    @Controller
    @RequestMapping("/test")
    public class TestController {
     
    	@RequestMapping(value = "", method = RequestMethod.GET)
    	public String levierPage(ModelMap model) {
     
    		return "test";
    	}
    }
    ma page, basée sur un template, s'affiche correctement c'est à dire avec le menu, le header, le corps et la mise en forme tels que définis dans la configuration de Tiles.

    En revanche, si j'accède à cette même page depuis un controller dédié à une autre page vie l'URL http://localhost:8080/MyApp/levier/test:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    @Controller
    @RequestMapping("/levier")
    public class LevierController {
     
    	@RequestMapping(value = "", method = RequestMethod.GET)
    	public String levierPage(ModelMap model) {
     
    		return "levier";
    	}
     
    	@RequestMapping(value="/test", method = RequestMethod.GET )
    	public String levierTest1() {
     
    		return ("test");
    	}
     
    }
    celle-ci s'affiche avec le menu, le header et le corps, mais aucun style CSS n'est appliqué.

    Une âme charitable saurait-elle me dire qu'est-ce qui ne ne va pas dans mon code ?

    Merci d'avance pour votre aide.

    Configuration tiles.xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    <?xml version="1.0" encoding="UTF-8" ?> 
    <!DOCTYPE tiles-definitions PUBLIC
           "-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN"
           "http://tiles.apache.org/dtds/tiles-config_3_0.dtd">
     
    <tiles-definitions>
     
    	<definition name="base.definition" template="/WEB-INF/views/templates/layout.jsp">
    		<put-attribute name="title" value="" />
    		<put-attribute name="header" value="/WEB-INF/views/templates/header.jsp" />
    		<put-attribute name="menu" value="/WEB-INF/views/templates/menu.jsp" />
    		<put-attribute name="body" value="" />
            <put-attribute name="footer" value="" />
    	</definition>
     
    	<definition name="levier" extends="base.definition">
    		<put-attribute name="title" value="Levier Manager" />
    		<put-attribute name="body" value="/WEB-INF/views/levier.jsp" />
    	</definition>
     
    	<definition name="test" extends="base.definition">
    		<put-attribute name="title" value="Test Page" />
            <put-attribute name="body" value="/WEB-INF/views/test.jsp" />
    	</definition>   
     
    </tiles-definitions>
    View resolver :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    @Configuration
    @EnableWebMvc
    @ComponentScan(basePackages = "com.app.spring")
    public class ApplicationConfiguration extends WebMvcConfigurerAdapter {
     
        @Bean
        public UrlBasedViewResolver urlBasedViewResolver() {
            UrlBasedViewResolver urlBasedViewResolver = new UrlBasedViewResolver();
            urlBasedViewResolver.setViewClass(TilesView.class);
            urlBasedViewResolver.setOrder(0);
     
            return urlBasedViewResolver;
        }
     
        @Bean
        public UrlBasedViewResolver setupViewResolver() {
            UrlBasedViewResolver urlBasedViewResolver = new UrlBasedViewResolver();
            urlBasedViewResolver.setPrefix("/WEB-INF/views/");
            urlBasedViewResolver.setSuffix(".jsp");
            urlBasedViewResolver.setViewClass(JstlView.class);
     
            urlBasedViewResolver.setOrder(1);
            return urlBasedViewResolver;
        }
     
        @Bean
        public TilesConfigurer tilesConfigurer() {
            TilesConfigurer tilesConfigurer = new TilesConfigurer();
            tilesConfigurer.setDefinitions(new String[] { "WEB-INF/views/tiles/tiles.xml"});
            tilesConfigurer.setCheckRefresh(true);
            tilesConfigurer.setPreparerFactoryClass(org.springframework.web.servlet.view.tiles3.SpringBeanPreparerFactory.class);
            return tilesConfigurer;
        }
     
        @Override
        public void addResourceHandlers(ResourceHandlerRegistry registry) {
            registry.addResourceHandler("/static/**").addResourceLocations("/static/");
            registry.addResourceHandler("/css/**").addResourceLocations("/static/css/");
            registry.addResourceHandler("/images_cds/**").addResourceLocations("/static/images_cds");
            registry.addResourceHandler("/test/**").addResourceLocations("/static/test/");
            registry.addResourceHandler("/images/**").addResourceLocations("/static/test/images");
            registry.addResourceHandler("/js/**").addResourceLocations("/static/js");
     
        }
    }
    Dispatcher Servlet Initializer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    public class SpringMvcInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
     
    	@Override
    	protected Class<?>[] getRootConfigClasses() {
    		return new Class[] { ApplicationConfiguration.class };
    	}
     
    	@Override
    	protected Class<?>[] getServletConfigClasses() {
    		return null;
    	}
     
    	@Override
    	protected String[] getServletMappings() {
    		return new String[] { "/" };
    	}
     
    	//For the session timeout management :
        @Override
        public void onStartup(ServletContext servletContext) throws ServletException {
            super.onStartup(servletContext);
            servletContext.addListener(new SessionListener());
        }
     
        @Override
        protected Filter[] getServletFilters() {
            return new Filter[] { new HiddenHttpMethodFilter() };
        }
     
    }
    Ma page template layout.jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    <%@ page contentType="text/html;charset=UTF-8"%>
    <%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%>
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    	<head>
    	    <link type="text/css" href="static/css/menu.css" rel="stylesheet" />
    	    <script type="text/javascript" src="static/css/menu.js"></script>
    	    <script type="text/javascript" src="static/css/jquery.js"></script>
     
    	<link type="text/css" href="static/css/styles.css" rel="stylesheet" />
    		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    		<title><tiles:insertAttribute name="title" ignore="true" /></title>
    	</head>
    	<style type="text/css">
    		div#menu { 
    			margin:0px auto; 
    	        position: fixed;
    	        top: 0;
    	        left: 0;
    	        width: 100%;
    		}
    		div#header { 
    			background-color: #ffffff;
    			margin: 30px auto;
    			position: fixed;
    	        top: 0;
    	        left: 0;
    	        width: 100%;
    		}
    		div#body { 
    			position: absolute;
    			margin:110px auto; 
    	        left: 0;
    	        width: 100%;
    		}
    	</style>
    	<body onload="set_float_menu();">
     
    		<div  style="z-index: 3" id= "menu" ><tiles:insertAttribute name="menu" /></div>
    		<div  style="z-index: 2" id= "header"><tiles:insertAttribute name="header" /></div>
    		<div  style="z-index: 1" id= "body"><tiles:insertAttribute name="body" /></div>
    	</body>
    </html>
    Ma page header.jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <h2>${TEXT_TITLE_PAGE}</h2>
    <hr/>
    Ma page menu.jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    <head>
        <meta http-equiv="content-type" content="text/html;charset=utf-8" />
        <link type="text/css" href="static/css/menu.css" rel="stylesheet" />
        <script type="text/javascript" src="static/css/jquery.js"></script>
        <script type="text/javascript" src="static/css/menu.js"></script>
     
    	<style type="text/css">
    		{ margin:0;
    		  padding:0;
    		}
     
    		body { background:rgb(227,219,210); }
     
    		div#menu { 
    			margin:0px auto; 
    		}
     
    	</style>
    </head>
    <body>
    	<div id="menu">
    	    <ul class="menu">
    	        <li><a href="#" class="parent"><span>Admin</span></a>
    	            <ul>
    	                <li><a href="#" class="parent"><span>Tables</span></a>
    	                    <ul>
    	                        <li><a href="#" class="parent"><span>Leviers</span></a>
    	                            <ul>
    	                                <li><a href="#"><span>Sub Item 1.1.1</span></a></li>
    	                                <li><a href="#"><span>Sub Item 1.1.2</span></a></li>
    	                            </ul>
    	                        </li>
    	                        <li><a href="#"><span>Sub Item 1.2</span></a></li>
    	                        <li><a href="#"><span>Sub Item 1.3</span></a></li>
    	                        <li><a href="#" class="parent"><span>Sub Item 1.7</span></a>
    	                            <ul>
    	                                <li><a href="#"><span>Sub Item 1.7.1</span></a></li>
    	                                <li><a href="#"><span>Sub Item 1.7.2</span></a></li>
    	                            </ul>
    	                        </li>
    	                    </ul>
    	                </li>
    	                <li><a href="#"><span>Sub Item 2</span></a></li>
    	                <li><a href="#"><span>Sub Item 3</span></a></li>
    	            </ul>
    	        </li>
    	    </ul>
    	</div>
    </body>

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2016
    Messages : 2
    Points : 5
    Points
    5
    Par défaut Résolu : Apache Tiles/spring: CSS non appliquée sur certaines pages
    J'ai enfin fini par trouver le problème après quelques heures de recherches supplémentaires...

    En fait, dans la page menu.jsp (par exemple), pour la lier au CSS correspondant, il faut remplacer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <link type="text/css" href="static/css/menu.css" rel="stylesheet" />
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <link type="text/css" href="<c:url value="/static/css/menu.css"/>" rel="stylesheet" />
    Oui c'était juste ça le problème .

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. CSS non appliquée sur une table dynamique IE8
    Par kap dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 02/04/2011, 15h42
  2. [Joomla!] CSS non appliquées
    Par tiger33 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 7
    Dernier message: 25/11/2007, 18h52
  3. objet monthview non diponible sur certains posts
    Par karimspace dans le forum Access
    Réponses: 5
    Dernier message: 30/08/2006, 11h18
  4. [HTML/CSS] a:hover sur certaines cellules
    Par kahya dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 13/06/2006, 16h30
  5. [APACHE 2] Images / Css Non affichée
    Par djshaker dans le forum Apache
    Réponses: 1
    Dernier message: 22/02/2006, 15h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo