весна 3, плитки не могут отображать изображение или использовать стиль CSS - PullRequest
2 голосов
/ 15 февраля 2011

Я удалил простое приложение Spring 3 после урока. После этого я сделал интегрированные тайлы 2. Сейчас я пытаюсь использовать стиль css в своих тайлах, но я не могу этого сделать и даже не могу отобразить изображение.

Внутри файла tile.xml у меня есть:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE tiles-definitions PUBLIC
   "-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"
   "http://tiles.apache.org/dtds/tiles-config_2_0.dtd">
<tiles-definitions>
<definition name="base.definition"
    template="/WEB-INF/jsp/layout.jsp">
    <put-attribute name="title" value="" />
    <put-attribute name="header" value="/WEB-INF/jsp/header.jsp" />
    <put-attribute name="menu" value="/WEB-INF/jsp/menu.jsp" />
    <put-attribute name="body" value="" />
    <put-attribute name="styles" value="base.css"/>
    <put-attribute name="footer" value="/WEB-INF/jsp/footer.jsp" />
</definition>

<definition name="dogBreed" extends="base.definition">
    <put-attribute name="title" value="Contact Manager" />
    <put-attribute name="body" value="/WEB-INF/jsp/dogBreed.jsp" />
</definition>

</tiles-definitions>

Внутри layout.jsp У меня есть

<%@ 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>
<link type="text/css" rel="stylesheet" href="<%=request.getContextPath()%>/styles/style.css"/>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title><tiles:insertAttribute name="title" ignore="true" /></title>
</head>
<body>

<table border="1" cellspacing="0" cellpadding="0" style="width:100%;height:100%">
    <tr>
        <td height=10% width=100%><tiles:insertAttribute name="header" />
        </td>
    </tr>
    <tr>
        <td height=80% width=20%><tiles:insertAttribute name="menu" /></td>
        <td width=80%  height=80%><tiles:insertAttribute name="body" /></td>
    </tr>
    <tr>
        <td height=10% width=100%><tiles:insertAttribute name="footer" />
        </td>
    </tr>
</table>
</body>
</html>

Я хочу удалить структуру таблицы и использовать css. Для этого я использую на layout.jsp следующее:

<link type="text/css" rel="stylesheet" href="<%=request.getContextPath()%>/style style.css"/>

Теперь внутри моего header.jsp у меня есть:

<div id="header">

   <div class="top_right">

        <div class="languages">
            <div class="lang_text">Languages:</div>
            <a href="#" class="lang"><img src="<%=request.getContextPath()%>/styles/images/en.gif" alt="" title="" border="0" /></a>
            <a href="#" class="lang"><img src="styles/images/de.gif" alt="" title="" border="0" /></a>       
        </div>

        <div class="big_banner">
        <a href="#"><img src="images/banner728.jpg" alt="" title="" border="0" /></a>
        </div>

    </div>


    <div id="logo">
        <a href="index.html"><img src="images/logo.png" alt="" title="" border="0" width="182" height="85" /></a>
    </div>
   </div>

Ни одна из картинок не отображается здесь, и я не понимаю, почему.

Папка стилей, которые содержат css и изображения, находится в папке rood войны.

Также в консоли появляется сообщение о том, что «не найдено сопоставление для HTTP-запроса с uri /pedsample/styles/images/en.gif в сервлете диспетчера с именем spring»

Мой web.xml содержит следующую справочную информацию:

<servlet>
    <servlet-name>spring</servlet-name>
    <servlet-class>
        org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>spring</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

Буду признателен за любую помощь.

Большое спасибо, Яннис

Ответы [ 3 ]

1 голос
/ 15 февраля 2011

Это не относится к плиткам.

Поскольку DispatcherServlet настроен для обработки всех URL-адресов в приложении, его необходимо настроить для обработки запросов на статическое содержимое.

Начиная с Spring 3.0.4 это можно сделать, добавив <mvc:resources> в конфигурацию Spring (также необходимо <mvc:annotation-driven />):

<mvc:resources location="/styles/" mapping="/styles/**" />

См. Также:

0 голосов
/ 01 февраля 2012

Убедитесь, что вы используете spring 3.0.4 или более поздней версии, в противном случае тег mvc:resources не будет работать, так как он был представлен в этой версии в соответствии с книгой "Spring in Action".

0 голосов
/ 15 февраля 2011

Похоже, что ваша основная проблема в том, что сервер не может предоставить ваш статический контент (images, css):

Также в консоли появляется сообщение о том, что "сопоставление не найденодля HTTP-запроса с uri /pedsample/styles/images/en.gif в сервлете диспетчера с именем spring "

Вам нужно настроенное отображение статического содержимого в конфигурации Spring:

<!-- Handles HTTP GET requests for by efficiently serving up static resources -->
<mvc:resources location="/styles/" mapping="/styles/**"/>
<mvc:resources location="/images/" mapping="/images/**"/>

Для более подробной информации: посмотрите главу "15.12.4 mvc: resources" ссылки на пружину

Добавлено Конечно, вам нужно объявитьпрефикс mvc:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd     
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd     
    http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
...