周末了,周一布置的任务还没完成,卡在了页面跳转上,接手了一个半截的项目要进行开发,之前没有人给培训,全靠自己爬代码,所以进度比较慢,而且加上之前没有用过 Spring Mvc 开发项目,所以有点吃力,不过接触了Spring Mvc近一个月的时间感觉 开发速度确实比 SSH快不少,不用一个一个的Bean去配置,直接扫描就OK了,可就是这样还是有些地方容易搞上一天也没搞多少进度,这不,被我新写的一个 Controller 的转发搞晕了,我本来要实现一个列表的分页查询,哪里想到点下一页的时候,除了我要的列表结果,在列表外又加了一层整理框架的页面(整个页面的头,左侧的菜单栏)都包括了进去,因为我这个功能基本是从其他功能模块平移过来的,排出了一整天最终确认就出来 我新建的Controller这个操作类上,但是怎么对比 也和其他的Controller类没啥区别,最后把定位放在了整个框架的默认页面上,结果整个项目一搜索default.jsp 这个文件出现的地方,在一个叫decorators.xml的文件内出现,初步看了一下,瞬间有种说不出的感觉(是我接触的项目可能还不够多,苦B的我呀),原来是它在作祟。
好了上面一大段流水账诉述一下本人苦苦寻找原由的一种精神和自我还需完善的状态。
我的解决方法:将我的 URL 添加到
<excludes>节点下的<pattern>内,如:
<excludes> <pattern>/getAllList*</pattern> <pattern>/resource/*</pattern> <pattern>/login*</pattern> </excludes>
随后网上搜了一篇仁兄的博文,转一下 自己留一份慢慢看,也让大家吸取一下我的教训。
博文地址:decorators.xml介绍
======================================下面为转帖===============================================
今天改前人做的项目,用struts2,spring,hibernate框架做的,对了,还有jquery。我用jquery做异步请求到后台,生成json数据返回前台生成下拉输入框,请求到后台以后,成功生成了json数据并根据struts的映射文件返回到一个jsp页面,这个页面的作用只是生成文本数据,但是js方面一直没有反应。。。从网上查到jquery.ajax有一个参数error,它可以告诉我这中间出了什么问题,error代码加上以后,alert一下,果然有错误:parsererror
网上查了一下,这个错误大概有这样几种原因:
1, 后台返回的json字符串格式不对
2, 配置文件,或者代码中的手误造成的问题
仔细排查了一下,第一条中的字符串格式问题不存在,于是又仔细的查看对比了以前的代码,还是没有问题,真让人绝望。。。
最后决定看看项目中所有的不常使用的配置文件,发现了如题的那个文件,发现原来问题出在这,它的作用是简化了jsp代码的重复工作(引入通用页面、js、css什么的。和include作用相当,比jsp中include更加简洁)。但是它把所有的页面都加上模板了,恰恰我这个jsp不需要模板,到此,问题找到了,把我定义的action放到它的excludes列表中去。问题解决。
网上有一篇文章挺细的,贴过来备用:
简介:
sitemesh应用Decorator模式,用filter截取request和response,把页面组件head,content,banner结合为一个完整的视图。通常我们都是用include标签在每个jsp页面中来不断的包含各种header, stylesheet, scripts and footer,现在,在sitemesh的帮助下,我们可以开心的删掉他们了。如下图,你想轻松的达到复合视图模式,那末看完本文吧。
一、在WEB-INF/web.xml中copy以下filter的定义:
<?xml version="1.0" encoding="GBK"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<filter>
<filter-name>sitemesh</filter-name>
<filter-class>com.opensymphony.module.sitemesh.filter.PageFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>sitemesh</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app> <decorators defaultdir="/decorators">
<decorator name="main" page="main.jsp">
<pattern>*</pattern>
</decorator>
</decorators> <%@ page contentType="text/html; charset=GBK"%>
<%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator"%> <html>
<head>
<title><decorator:title default="装饰器页面..." /></title>
<decorator:head />
</head>
<body>
sitemesh的例子<hr>
<decorator:body />
<hr>chen56@msn.com
</body>
</html> <%@ page contentType="text/html; charset=GBK"%>
<html>
<head>
<title>Agent Test</title>
</head>
<body>
<p>本页只有一句,就是本句.</p>
</body>
</html> <sitemesh>
<page-parsers>
<parser default="true" class="com.opensymphony.module.sitemesh.parser.DefaultPageParser" />
<parser content-type="text/html" class="com.opensymphony.module.sitemesh.parser.FastPageParser" />
<parser content-type="text/html;charset=ISO-8859-1" class="com.opensymphony.module.sitemesh.parser.FastPageParser" />
</page-parsers>
<decorator-mappers>
<mapper class="com.opensymphony.module.sitemesh.mapper.ConfigDecoratorMapper">
<param name="config" value="/WEB-INF/decorators.xml" />
</mapper>
<mapper class="com.opensymphony.module.sitemesh.mapper.PrintableDecoratorMapper">
<param name="decorator" value="printable" />
<param name="parameter.name" value="printable" />
<param name="parameter.value" value="true" />
</mapper>
</decorator-mappers>
</sitemesh>
decorators.xml :定义构成复合视图的所有页面构件的描述(主要结构页面,header,footer...),如下例:
<decorators defaultdir="/decorators">
<decorator name="main" page="main.jsp">
<pattern>*</pattern>
</decorator>
<decorator name="printable" page="printable.jsp" role="customer" webapp="aaa" />
</decorators> <%@ page contentType="text/html; charset=GBK"%>
<%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator" %>
<html>
<head>
<title><decorator:title default="装饰器页面..." /></title>
<decorator:head />
</head>
<body>
sitemesh的例子<hr>
<decorator:body />
<hr>chen56@msn.com
</body>
</html> <mapper class="com.opensymphony.module.sitemesh.mapper.PrintableDecoratorMapper">
<param name="decorator" value="printable" />
<param name="parameter.name" value="printable" />
<param name="parameter.value" value="true" />
</mapper> <%@ taglib uri="sitemesh-decorator" prefix="decorator" %>
<html>
<head>
<title><decorator:title /></title>
<decorator:head />
</head>
<body>
<h1><decorator:title /></h1>
<p align="right"><i>(printable version)</i></p>
<decorator:body />
</body>
</html>
使用Spring Mvc 转发 带着模板 父页面 之解决方法 decorators.xml,布布扣,bubuko.com
使用Spring Mvc 转发 带着模板 父页面 之解决方法 decorators.xml
原文:http://blog.csdn.net/morning99/article/details/35829563