SiteMesh框架中复用页面CSS无法使用问题

blareck 2009-06-04 09:04:34
我在WebRoot下建立了一个decorators的文件夹里面建立了一个复用的jsp页面 main.jsp现在我通过在<title></title>中用
<link href="style.css" type="text/css" rel="stylesheet" />
引入css文件,在Myeclipse的main.jsp的预览中一切都显示正常
项目运行过后页面却和没有css的纯html页面一样,但是通过<decorator:body />却能正常的将页面显示出来,控制台中也没有出现任何的错误!
在WEB-INF 中的decorators.xml文件的内容如下
引用
<?xml version="1.0" encoding="GBK"?>
<decorators defaultdir="/decorators">
<!-- 在excludes元素下指定的页面将不会由SiteMesh来装饰 -->
<excludes>
</excludes>

<!-- 创建一个名为main的装饰器,该装饰器页面为main.jsp,
用于装饰pattern指定的URL的所有页面-->
<decorator name="main" page="main.jsp">
<pattern>/*</pattern>
</decorator>

</decorators>

WEB-INF.xml的配置
引用
<!-- 定义整合SiteMesh必需的ActionContextCleanUp Filter -->
<filter>
<filter-name>struts-cleanup</filter-name>
<filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>
</filter>
<!-- 定义整合SiteMesh和核心 Filter -->
<filter>
<filter-name>sitemesh</filter-name>
<filter-class>com.opensymphony.module.sitemesh.filter.PageFilter</filter-class>
</filter>
<!-- ActionContextCleanup的Filter必须排在第一位 -->
<filter-mapping>
<filter-name>struts-cleanup</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- SiteMesh页面装饰的核心过滤器排在第二位 -->
<filter-mapping>
<filter-name>sitemesh</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

请问这是怎么回事啊?
但是CSS的引用是没有问题的。
将CSS代码直接放入页面之中,通过<style></style>来直接使用CSS页面没有问题,
但是CSS里面通过:background:#1F2C08 url(img01.jpg) repeat-x left top;
引入的img01.jpg图片无法引入。
注意:在预览,jsp这些标签去掉后以html的方式直接打开都是没有任何问题的,页面和设计的一样,但是运行后却出现CSS没有使用以及图片没有使用!
...全文
144 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
最近恰好在联系用Struts2+SiteMesh重构项目,一点儿经验分享给你,请指正:
有两种方式处理资源文件的路径:
1.传统解决方案:利用head标签的base属性
------------------------------------
放以下代码到页面的<head></head>之间:
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
%>
<base href="<%=basePath%>">

大致意思是本页面所有链接都以webapp根目录为起始点。此时直接写图片路径还是css路径都没有问题了。比如:<link href="css/style.css" type="text/css" rel="stylesheet" /> ,其中css目录和web-inf目录为同级目录,即都在webapp根目录下。
---------------
2.第二种方式:使用Struts2的s:url标签来搞定,推荐用这种:
-----------------------------------------------------
什么额外代码都不需要,引入资源文件时只需要这么写,如:
<link href="<s:url value="/css/manager.css"/>" rel="stylesheet" type="text/css"/>

----
希望这个回帖不算太晚。我也是刚刚开始实践sitemesh。初步感觉很好很强大!

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧