2016-01-24 36 views
0

我現在在試圖學習apche瓷磚的春天mvc ...但它不工作....不知道爲什麼?Spring MVC Apache tiles:頁腳從輸出中丟失

****的servlet-context.xml的**文件**

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




<mvc:annotation-driven /> 



<bean 
    class="org.springframework.web.servlet.view. 
    InternalResourceViewResolver"> 
    <property name="prefix" value="/WEB-INF/views/" /> 
    <property name="suffix" value=".jsp" /> 
</bean> 

<context:component-scan base-package="com.mymvc.myapp" /> 

<bean id="tilesConfigurer" 
    class="org.springframework.web.servlet.view.tiles3.TilesConfigurer"> 
    <property name="definitions"> 
     <list> 
      <value>/WEB-INF/defs/general.xml</value> 
     </list> 
    </property> 
</bean> 

<bean id="viewResolver" 
    class="org.springframework.web.servlet.view.UrlBasedViewResolver"> 
    <property name="viewClass" 
     value="org.springframework.web.servlet.view.tiles3.TilesView" /> 
< /bean> 


</beans> 

在pom.xml的瓷磚dependicies

<dependency> 
     <groupId>org.apache.tiles</groupId> 
     <artifactId>tiles-core</artifactId> 
     <version>${apache.tiles}</version> 
</dependency> 

<dependency> 
     <groupId>org.apache.tiles</groupId> 
     <artifactId>tiles-jsp</artifactId> 
     <version>${apache.tiles}</version> 
</dependency> 

<dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-log4j12</artifactId> 
     <version>1.7.6</version> 
</dependency> 

general.xml

<?xml version="1.0" encoding="ISO-8859-1" ?> 
    <!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="common" template="/WEB-INF/layout/classic.jsp"> 
    <put-attribute name="footer" value="/WEB-INF/layout/footer.jsp" /> 
</definition> 

    <definition name="index" extends="common"> 
    <put-attribute name="title" value="Java Blog Aggregator" /> 
    <put-attribute name="body" value="/WEB-INF/views/index.jsp" /> 
</definition> 
</tiles-definitions> 

classic.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" 
pageEncoding="UTF-8"%> 
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%> 
<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    <title><tiles:getAsString name="title"/></title> 
</head> 
    <body> 
    <tiles:insertAttribute name="body" /> 
    <br> 
    <br> 
    <center> 
      <tiles:insertAttribute name="footer" /> 
    </center> 
    </body> 
</html> 

footer.jsp中

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

    &copy;IShmam Shahriar 

IndexController.java

package com.mymvc.myapp; 

import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 

@Controller 
public class IndexController { 
     @RequestMapping("/index") 
     public String index(){ 
      return "index"; 
     } 
    } 

的index.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
pageEncoding="ISO-8859-1"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
"http://www.w3.org/TR/html4/loose.dtd"> 

<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=ISO- 
     8859-1"> 
     <title>Insert title here</title> 
    </head> 
    <body> 
     <p>index page</p> 
    </body> 
</html> 
+1

「但它不工作」 - 這是什麼意思是什麼呢? – kryger

+0

我期望輸出....索引頁與頁腳.....索引頁正在顯示....但頁腳不是... –

回答

1

您的HTML是錯誤的!它有一個關閉<body><html>標籤在你的「主要內容(index.jsp)」!

你有你的模板:classic.jsp,你在<tiles:insertAttribute name="body" />佔位符包括index.jsp。因此產生的HTML會的樣子,(完整index.jsp將在佔位符插入!):

<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>...</title> 
    </head> 
    <body> 
<html>       <!-- problem starts her --> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=ISO8859-1"> 
     <title>Insert title here</title> 
    </head> 
    <body> 
     <p>index page</p> 
    </body>      <!-- that is the reason for not --> 
</html>       <!-- having a footer --> 
     <br> 
     <br> 
     <center> 
      &copy;IShmam Shahriar 
     </center> 
    </body> 
</html> 

你有沒有注意到,你「親密」的HTML內容</body></html>已經前軀! - 解決方法很簡單:從index.jsp刪除所有的標題,html和body標籤:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 

    <p>index page</p> 

的另一點:

InternalResourceViewResolver從配置中刪除。問題是你有兩個視圖解析器(Internal和Url/Tiles),很可能你的視圖名稱(return "index")由內部視圖解析器解析,但不是由Url/Tiles解析器解析。

Spring Reference, Chapter 18.3.2 Integration Tiles,你只需要:

  • org.springframework.web.servlet.view.tiles3.TilesConfigurer
  • org.springframework.web.servlet.view.UrlBasedViewResolverTilesView配置爲viewClass財產(或使用org.springframework.web.servlet.view.tiles3.TilesViewResolver - 這是UrlBasedViewResolver的anready配置的子類)
    • 和你可以有一個org.springframework.web.servlet.view.ResourceBundleViewResolver

例如:

<bean id="tilesConfigurer" 
    class="org.springframework.web.servlet.view.tiles3.TilesConfigurer"> 
    <property name="definitions"> 
     <list> 
      <value>/WEB-INF/defs/general.xml</value> 
     </list> 
    </property> 
</bean> 

<bean class="org.springframework.web.servlet.view.UrlBasedViewResolver" id="tilesViewResolver"> 
    <property name="viewClass" value="org.springframework.web.servlet.view.tiles3.TilesView"/> 
</bean> 
相關問題