2016-10-20 13 views
0

私は、ヘッダ、メニュー、ボディを持つタイルのレイアウトページを持っています。このレイアウトでは、レイアウト全体をリフレッシュしてリフレッシュします。私はヘッダー、メニューを静的にし、ボディ部分だけを更新する必要があります。タイルリフレッシュのみ本文のコンテンツ

(1)write this tiles configuration into spring xml file. 
    <bean id="viewResolver" class="org.springframework.web.servlet.view.tiles3.TilesViewResolver"/> 

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

(2)layouts.xml file 
<?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="DefaultTemplate" template="/WEB-INF/views/template/SiteTemplate.jsp"> 
     <put-attribute name="title"  value="Home" /> 
     <put-attribute name="header" value="/WEB-INF/views/template/header.jsp" /> 
     <put-attribute name="menu"  value="/WEB-INF/views/template/menu.jsp" /> 
     <put-attribute name="body"  value="" /> 
     <put-attribute name="footer" value="/WEB-INF/views/template/footer.jsp" /> 
    </definition> 

</tiles-definitions> 

(3)views.xml 
<?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="index" extends="DefaultTemplate"> 
     <put-attribute name="body" value="/WEB-INF/views/index.jsp" /> 
    </definition> 

    <definition name="personList" extends="DefaultTemplate"> 
     <put-attribute name="body" value="/WEB-INF/views/personList.jsp" /> 
    </definition> 

</tiles-definitions> 

(4)SiteTemplate.jsp 

    <%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
     pageEncoding="ISO-8859-1"%> 
    <%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%> 
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>Spring MVC - Tiles Integration tutorial</title> 
     <link rel="stylesheet" href="resources/css/screen.css" type="text/css" media="screen, projection"></link> 
     <link rel="stylesheet" href="resources/css/print.css" type="text/css" media="print"></link> 
     <!--[if IE]> 
     <link rel="stylesheet" href="resources/css/ie.css" type="text/css" media="screen, projection"> 
     <![endif]--> 
    <style> 
    body{ margin-top:20px; margin-bottom:20px; background-color:#DFDFDF;} 
    </style> 
    </head> 
    <body> 
     <div class="container" style="border: #C1C1C1 solid 1px; border-radius:10px;"> 
      <!-- Header --> 
      <tiles:insertAttribute name="header" /> 
      <!-- Menu Page --> 
      <div class="span-5 border" style="height:400px;background-color:#FCFCFC;"> 
       <tiles:insertAttribute name="menu" /> 
      </div> 
      <!-- Body Page --> 
      <div class="span-19 last"> 
       <tiles:insertAttribute name="body" /> 
      </div> 
      <!-- Footer Page --> 
      <tiles:insertAttribute name="footer" /> 
     </div> 
    </body> 
    </html> 

(5)menu.jsp 

    <%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> 
    <ul style="list-style:none;line-height:28px;"> 

     <li><spring:url value="/index" var="homeUrl" htmlEscape="true" /> 
      <a href="${homeUrl}">Home</a> 
     </li> 

     <li><spring:url value="/viewPeson" var="personListUrl" htmlEscape="true" /> 
      <a href="${personListUrl}">Person List</a> 
     </li> 

    </ul> 

(6)same as write footer.jsp and header.jsp for your requirement. 

(7)code for controlller 

    @RequestMapping(value="index") 
     public String index() { 
      return "index"; 
     } 

ヘッダー、メニューのリフレッシュを防ぎ、Apacheのタイル3を用いて実現することができるメニューをクリックしたときに、唯一のボディコンテンツを更新する方法はありますか?

+0

あなたのコードを質問に追加してください。 – suku

+0

あなたが何を求めているのか不明です。パーツは1つのHTMLページにまとめられているので、すべてが一緒にリフレッシュされます。 – Henry

+0

親愛なるHenry Sirがチェックしてください.....問題は、メニューリンクをクリックして全体のレイアウトをリロードするときだけです。ボディコンテンツJSPファイルをリフレッシュしてください。他の方法でお手伝いください。 – Satheeshkumar

答えて

0

tiles.xmlには、複数のレイアウト定義を作成できます。ボディの変更が必要な場合は、基本レイアウトを作成することができます。 2番目のレイアウトを作成して基本レイアウトを拡張し、必要な更新を行います。この場合、タイトル、ヘッダー、メニュー、フッターは同じになりますが、本文は異なります。次のようなレイアウトを書くことができます。

<definition name="DefaultTemplate" template="/WEB-INF/views/template/SiteTemplate.jsp"> 
     <put-attribute name="title"  value="Home" /> 
     <put-attribute name="header" value="/WEB-INF/views/template/header.jsp" /> 
      <put-attribute name="menu"  value="/WEB-INF/views/template/menu.jsp" /> 
      <put-attribute name="body"  value="" /> 
      <put-attribute name="footer" value="/WEB-INF/views/template/footer.jsp" /> 
</definition> 

<defintion name="SecondaryTemplate" extends="DefaultTemplate"> 
    <put-attribute name="body" value="location_of_your_jsp"/> 
</defintion> 

2番目のテンプレートは、最初のテンプレートからすべての属性を維持していますが、その特定のために参照するJSPと身体属性を更新し、あなたの最初のテンプレートを拡張しますページ。

関連する問題