sitemesh装饰一个用<jsp:include>包含另一个jsp页面jsp页面,不能正常显示

问题描述

sitemesh装饰一个用<jsp:include>包含另一个jsp页面jsp页面,不能正常显示
用sitemesh装饰jsp页面,被装饰的jsp页面中用jsp:include包含另一个jsp页面,最终不能正常显示内容。
首先我将sitemesh2.4.2.jar包导入到项目的lib包中,之后编写我的装饰页面,页面很简单:

 <%@ page language=""java"" contentType=""text/html; charset=UTF-8""    pageEncoding=""UTF-8""%><%@ taglib uri=""http://www.opensymphony.com/sitemesh/decorator"" prefix=""decorator"" %><!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=UTF-8""><title><decorator:title/></title></head><body><div>    <div><h1>小系统</h1></div>    <hr/></div><decorator:body/></body></html>

之后我写了一下decorators.xml,代码如下:

 <?xml version=""1.0"" encoding=""UTF-8""?><decorators defaultdir=""/WEB-INF/decorators"">    <!-- Any urls that are excluded will never be decorated by Sitemesh -->    <excludes>        <pattern>/exclude.jsp</pattern>        <pattern>/exclude/*</pattern>    </excludes>    <decorator name=""main"" page=""decorator.jsp"">        <pattern>/*</pattern>    </decorator></decorators>

然后配置web.xml,在web.xml中添加如下代码:

   <filter>    <filter-name>sitemesh</filter-name>    <filter-class>com.opensymphony.sitemesh.webapp.SiteMeshFilter</filter-class>  </filter>  <filter-mapping>    <filter-name>sitemesh</filter-name>    <url-pattern>/*</url-pattern>  </filter-mapping>

好了,接着我写了一个servlet,通过这个servlet访问下面的list.jsp页面:

 <%@ page language=""java"" contentType=""text/html; charset=UTF-8"" pageEncoding=""UTF-8""%><%@taglib prefix=""c"" uri=""http://java.sun.com/jsp/jstl/core""%><!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=UTF-8""><title>用户列表界面</title></head><body><div><form action=""user.do""><input type=""hidden"" name=""method"" value=""list""/>    <table align=""center"" border=1 cellpadding=""0"" cellspacing=""0"" width=""800"">        <tr><td colspan=""6"">请输入要查询的用户名:<input type=""text"" name=""search"" /><input type=""submit"" value=""查询""/></td></tr>        <tr><td>id</td><td>用户名</td><td>用户密码</td><td>用户昵称</td><td>用户类型</td><td>操作</td></tr>        <c:forEach var=""user"" items=""${page.list }"">            <tr><td>${user.id }</td><td>${user.username }</td><td>${user.password }</td><td>${user.nickname }</td>            <td>                <c:choose>                    <c:when test=""${user.type ne true }"">超级无敌管理员</c:when>                    <c:otherwise>普通屌丝</c:otherwise>                </c:choose>            </td>            <td><a href="""">修改信息</a>&nbsp;&nbsp;&nbsp;<a href="""">删除</a></td></tr>        </c:forEach>        <tr><td colspan=""6"">            <jsp:include page=""/inc/pager.jsp"">                <jsp:param value=""${page.totalNum }"" name=""totalNum""/>                <jsp:param value=""${page.dataCount }"" name=""dataCount""/>                <jsp:param value=""/shop01/user.do"" name=""url""/>                <jsp:param value=""methodsearch"" name=""params""/>            </jsp:include>        </td></tr>    </table></form></div></body></html>

可是访问结果却是:

后来我把上面的list.jsp中的jsp:include标签中的内容注释掉,列表就能正常显示。后来我重新建立项目试了几次,发现只要被sitemesh装饰的页面中含有jsp:include内容,就只能显示jsp:include动态包含的内容和装饰页面的内容。

这是怎么一回事?被装饰页面中原有的内容为什么在有了动态包含之后就不能显示了?求大神解答~~~~

解决方案

还是我自己回答吧。是因为被修饰的页面中的jsp:include的页面中含有

标签,只要把include的页面的标签去掉就好了 解决方案二:
http://www.iteye.com/problems/26673

解决方案三:
还是我自己回答吧。是因为被修饰的页面中的jsp:include的页面中含有

标签,只要把include的页面的标签去掉就好了

时间: 2024-08-03 13:50:12

sitemesh装饰一个用&amp;lt;jsp:include&amp;gt;包含另一个jsp页面jsp页面,不能正常显示的相关文章

JSP 最佳实践:用 jsp:include 控制动态内容

include|js|动态|控制 本文是 Java"知情人士"Brett McLaughlin 继第一篇 JSP 最佳实践文章后的后续文章,在文中,作者向您演示了如何扩展 JSP 技术中用于动态内容的包含功能.了解静态 include 伪指令和动态 jsp:include 元素之间的差异,搞清楚如何混合搭配这二者以获取最优性能.在新的 JSP 最佳实践系列的前一篇文章中,您了解了如何使用 JSP include 伪指令将诸如页眉.页脚和导航组件之类的静态内容包含到 Web 页面中.和服

JSP:include 用于构建动态网站的简单 JSP 标记

include|js|动态 本文是 Java Brett McLaughlin 继第一篇 JSP 最佳实践文章后的后续文章,在文中,作者向您演示了如何扩展 JSP 技术中用于动态内容的包含功能.了解静态 include 伪指令和动态 jsp:include 元素之间的差异,搞清楚如何混合搭配这二者以获取最优性能. 在新的 JSP 最佳实践系列的前一篇文章中,您了解了如何使用 JSP include 伪指令将诸如页眉.页脚和导航组件之类的静态内容包含到 Web 页面中.和服务器端包含一样,JSP

JSP最佳实践: 用jsp:include控制动态内容

简介:本文是 Java Brett McLaughlin 继第一篇 JSP 最佳实践文章后的后续文章,在文中,作者向 您演示了如何扩展 JSP 技术中用于动态内容的包含功能.了解静态 include 伪指令和动态 jsp:include 元素之间的差异,搞清楚如何混合搭配这二者以获取最优性能. 在新的 JSP 最佳实践系列的前一篇文章中,您了解了如何使用 JSP include 伪指令将诸如页眉.页 脚和导航组件之类的静态内容包含到 Web 页面中.和服务器端包含一样,JSP include 伪

使用jsp:include控制动态内容的方法_JSP编程

本文实例讲述了使用jsp:include控制动态内容的方法.分享给大家供大家参考,具体如下: 清单 1. JSP include 伪指令 <![CDATA[ <%@ page language="java" contentType="text/html" %> <html> <head> <title>newInstance.com</title> <meta http-equiv="

JSP include parm动作

常用的有page.include.taglib指令这三种指令: page:位于页面顶端,一个页面可以包含多个page指令 include:将一个外部文件嵌入jsp中,同时解析这个页面中的jsp语句. taglib:使用标签库,自定义新的标签,在jsp中启动定制行为. include指令 1.语法 <% include file="地址"%>. 案例:显示当前时间的页面.(1)写一个只输出时间的方法的date.jsp.(2)用于显示的页面,包含<% include fi

JSP经典学习笔记(包含各种入门常用语法)_JSP编程

本文介绍了JSP经典学习笔记.分享给大家供大家参考.具体如下: JSP是Servlet的一种特殊形式,每个JSP页面就是一个Servlet实例--JSP页面有系统编译成Servlet,Servlet再负责响应用户请求. 1.JSP注释 <%--注释内容--%> ,与HTML注释<!--注释内容-->不同的是,编译后的HTML页面无法查看到JSP注释内容. 2.JSP声明 JSP声明用于声明变量和方法.JSP声明将会转换成Servlet中的成员变量或成员方法,因此,JSP声明依然符合

jsp:include

include|js 包含一个静态或动态文件. JSP 语法 <jsp:include page="{relativeURL | <%= expression%>}" flush="true" /> or <jsp:include page="{relativeURL | <%= expression %>}" flush="true" > <jsp:param name=

JSP最佳实践: 使用JSP include机制改进外观

简介:本文是新的 JSP 最佳实践系列文章的第一部分,它介绍了 JavaServer Pages include 机制. 请跟随 Java 编程专家 Brett McLaughlin 学习如何使用 include 将静态的头文件和脚注文件加入您的 网站或 Web 应用程序页面中. 欢迎阅读 Java 专区中最新的 最佳实践系列文章.如果您看过先前的系列文章,那么您会知道最佳实 践旨在让您快速了解各种 Java 技术的有用方面.这一系列的最佳实践专门讨论 JavaServer Pages(JSP

jsp:include参数传送接收与应用

  先看一个简单的应用,在a.jsp中写如下代码 <div> <jsp:include page="name.jsp" > <jsp:param name="name" value="xy" /> </jsp:include> </div> 这就将名为name,值为xy的参数传送到name.jsp.   那么在name.jsp中接收参数     <%  String n=reque