Sitemesh 的路径问题

Sitemesh的问题让人非常头痛,搞了一天。现把心得整理一下

 

首先是decorator.xml里面的配置问题

 

 <decorator name="admin" page="admin.jsp">
        <pattern>/index/login.jsp</pattern>
        <pattern>/index/index.jsp</pattern>
        <pattern>/common/journal/journalHome.jsp</pattern>
    </decorator>

 定义了amin这个装饰器装修的页面,均采用绝对路径

 

其次是装饰器页面里的路径,分为两部分,

<link  rel="stylesheet" type="text/css" href="<%=application.getContextPath()%>/decorators/main.css">

 

这些HTML标签里的 href可以用="<%=application.getContextPath()%>/获得应用环境的路径,没问题

 

但是

<page:applyDecorator page="<%=application.getContextPath()%>/decorators/nav.jsp" name="panel"  encoding="UTF-8" />

 就有问题了,总是编译不过,是否写错了,还是不能这样用,还在研究中

 

不过有一点还是明白的,那就sitemesh过滤器对当前的请求地址进行处理,截取最后一个/前的地址,再加到<page:applyDecorator>标签中的page属性上,如当前请求

http://localhost:8080/macaulites/common/journal/journalHome.jsp

 

<page:applyDecorator page="/decorators/nav.jsp" name="panel"  encoding="UTF-8" />

 

最后得到的地址是

 

http://localhost:8080/macaulites/common/journal/decorators/nav.jsp

 

所以经常出现找不到页面的问题,我们在装饰器标签的page属性用绝对地址"/macaulites"有问题,但用另一种绝对地址形式则无问题如

http://localhost:8080/macaulites/decorators/nav.jsp

 

 

 

现在项目的sitemesh路径的解决方法是:href src 等用 /macaulites/...... 这种形式的绝对路径

                                                       page 属性用  http://localhost:8080/macaulites/这种绝对路径

 

 但是上面还是有问题,page属性采用上面那种绝对路径会产生页面乱码,最终用${application.contextPath}解决了所有问题

试一下${pageContext.request.contextPath}

 

 

另个转载一下:http://jeoff.blog.51cto.com/186264/90354

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值