2012-11-10 4 views
1

많은 시도했지만 성공하지 못했습니다. 본문 만 렌더링하지 않습니다.. 모든 포함은 데코레이터에서 제대로 병합됩니다. 결과 페이지를 참조하십시오.Sitemesh3 + Freemarker, 렌더링하지 않는 본체 만

사양

jdk = 1.7 
struts2 = 2.3.4.1 
sitemesh = 3.0-alpha-2 

결과 페이지

<!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"> 
<link rel="stylesheet" href="/css/bootstrap.min.css" /> 
    </head> 
    <body id="public"> 
     <div class="container"> 
      No Body 
     </div> 
    </body> 
</html> 

sitemesh3.xml

<sitemesh> 
    <mapping decorator="/WEB-INF/decorators/main.ftl"/> 
</sitemesh> 

의 Web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> 

    <display-name>Struts2 SiteMesh Freemarker Web Application</display-name> 

    <listener> 
     <listener-class>org.apache.struts2.dispatcher.ng.listener.StrutsListener</listener-class> 
    </listener> 

    <filter> 
     <filter-name>sitemesh</filter-name> 
     <filter-class>org.sitemesh.config.ConfigurableSiteMeshFilter</filter-class> 
    </filter> 

    <filter> 
     <filter-name>struts-prepare</filter-name> 
     <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter</filter-class> 
    </filter> 
    <filter> 
     <filter-name>struts-execute</filter-name> 
     <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsExecuteFilter</filter-class> 
    </filter> 

    <filter-mapping> 
     <filter-name>struts-prepare</filter-name> 
     <url-pattern>/*</url-pattern> 
    </filter-mapping> 
    <filter-mapping> 
     <filter-name>sitemesh</filter-name> 
     <url-pattern>/*</url-pattern> 
     <dispatcher>REQUEST</dispatcher> 
     <dispatcher>FORWARD</dispatcher> 
     <dispatcher>INCLUDE</dispatcher> 
    </filter-mapping> 
    <filter-mapping> 
     <filter-name>struts-execute</filter-name> 
     <url-pattern>/*</url-pattern> 
    </filter-mapping> 

    <servlet> 
     <servlet-name>sitemesh-freemarker</servlet-name> 
     <servlet-class>com.opensymphony.module.sitemesh.freemarker.FreemarkerDecoratorServlet</servlet-class> 
     <init-param> 
      <param-name>TemplatePath</param-name> 
      <param-value>/</param-value> 
     </init-param> 
     <init-param> 
      <param-name>default_encoding</param-name> 
      <param-value>ISO-8859-1</param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>sitemesh-freemarker</servlet-name> 
     <url-pattern>*.ftl</url-pattern> 
    </servlet-mapping> 

    <welcome-file-list> 
     <welcome-file>index.ftl</welcome-file> 
    </welcome-file-list> 

</web-app> 

의 pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.myapp</groupId> 
    <artifactId>Struts2_SiteMesh3_FreeMarker</artifactId> 
    <packaging>war</packaging> 
    <version>1.0</version> 
    <name>Struts2_SiteMesh3_FreeMarker WebApp</name> 
    <url>http://maven.apache.org</url> 

    <properties> 
     <java.version>1.7</java.version> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <struts2.version>2.3.4.1</struts2.version> 
     <slf4j.version>1.6.6</slf4j.version> 
     <sitemesh.version>3.0-alpha-2</sitemesh.version> 
    </properties> 

    <dependencies> 
     <dependency> 
      <groupId>javax</groupId> 
      <artifactId>javaee-web-api</artifactId> 
      <version>6.0</version> 
      <scope>provided</scope> 
     </dependency> 

     <!--Start Slf4j--> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-api</artifactId> 
      <version>${slf4j.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-simple</artifactId> 
      <version>${slf4j.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>log4j</groupId> 
      <artifactId>log4j</artifactId> 
      <version>1.2.17</version> 
     </dependency> 
     <!--End Slf4j--> 

     <!-- Start struts2 dependencies --> 
     <dependency> 
      <groupId>org.apache.struts</groupId> 
      <artifactId>struts2-core</artifactId> 
      <version>${struts2.version}</version> 
     </dependency> 
     <!-- End struts2 dependencies --> 

     <!-- Start SiteMesh dependencies --> 
     <dependency> 
      <groupId>org.apache.struts</groupId> 
      <artifactId>struts2-sitemesh-plugin</artifactId> 
      <version>${struts2.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.sitemesh</groupId> 
      <artifactId>sitemesh</artifactId> 
      <version>${sitemesh.version}</version> 
     </dependency> 
     <!-- End SiteMesh dependencies --> 

    </dependencies> 

    <build> 
     <finalName>Struts2_SiteMesh3_FreeMarker</finalName> 
    </build> 

</project> 

장식

<!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"> 
     <#include "../include/meta.ftl"> 
    </head> 
    <body id="public"> 
     <#include "../include/navigation.ftl"> 
     <div class="container"> 
      <#include "../include/search.ftl"> 
      ${body} 
     </div> 
    </body> 
</html> 

index.ftl

프로젝트 구조

project

+0

당신의 decorator.ftl 대신 ${body}<sitemesh:write property='body'/>를 사용 Sitemesh3는 Freemarker를 지원하지 않습니다. JSP 및 정적 지원은 100 % 작동합니다. 누구든지 해결책이 있으면 게시 해주십시오. – Pirzada

+0

제쳐두고 당신은 타일을 시험해 볼 수 있습니다. 나는 타일 3을 가지고가는 것이 좋습니다. – Quaternion

+0

@ quaternion, 이것에 대한 도움이 필요합니다. http://stackoverflow.com/questions/13427495/error-with-struts2-tiles3-0-0-when-navigate-from-index – Pirzada

답변

1

추가 서블릿 freemarker.ext.servlet.FreemarkerServlet <url-pattern>*.ftl</url-pattern>에서 웹 XML과 실험을 많이 체결 후

관련 문제