我用sitemesh+sturts <?xml version="1.0" encoding="GBK" ?>
<decorators defaultdir="/WEB-INF/decorators">
<!-- 在excludes元素下指定的页面将不会由SiteMesh来装饰
-->
<excludes />
<!-- 创建一个名为main的装饰器,该装饰器页面为main.jsp,
用于装饰pattern指定的URL的所有页面
-->
<decorator name="main" page="main.jsp">
<pattern>/*.*</pattern>
</decorator>
<!-- 定义一个装饰器,但该装饰器默认不装饰任何页面
-->
<decorator name="panel" page="panel.jsp" />
</decorators>不由SITEMESH管理的,放在 <excludes />里
可是SITEMESH 不是以 页面为单位的 而是以 地址为单位,比如:
一个注册页面register.jsp 该页面你不想用sitemesh,就在 excludes里加上register.jsp。
地址栏打上 http:\\localhost:8080\xxx\register.jsp 正常没用使用sitemesh布局
由于处理验证注册是交给action来处理的,在struts.xml 设置为 registerprocess.do
当你提交这个页面的时候地址栏会变成http:\\localhost:8080\xxx\registerprocess.do这个时候
这个页面就是由setemesh布局了 。一定要在sitemesh excludes加上regiterprocess.do 才可以
这样也太复杂了吧 ,还不如自己 include。
是不是有什么方法设置的啊 ?
<decorators defaultdir="/WEB-INF/decorators">
<!-- 在excludes元素下指定的页面将不会由SiteMesh来装饰
-->
<excludes />
<!-- 创建一个名为main的装饰器,该装饰器页面为main.jsp,
用于装饰pattern指定的URL的所有页面
-->
<decorator name="main" page="main.jsp">
<pattern>/*.*</pattern>
</decorator>
<!-- 定义一个装饰器,但该装饰器默认不装饰任何页面
-->
<decorator name="panel" page="panel.jsp" />
</decorators>不由SITEMESH管理的,放在 <excludes />里
可是SITEMESH 不是以 页面为单位的 而是以 地址为单位,比如:
一个注册页面register.jsp 该页面你不想用sitemesh,就在 excludes里加上register.jsp。
地址栏打上 http:\\localhost:8080\xxx\register.jsp 正常没用使用sitemesh布局
由于处理验证注册是交给action来处理的,在struts.xml 设置为 registerprocess.do
当你提交这个页面的时候地址栏会变成http:\\localhost:8080\xxx\registerprocess.do这个时候
这个页面就是由setemesh布局了 。一定要在sitemesh excludes加上regiterprocess.do 才可以
这样也太复杂了吧 ,还不如自己 include。
是不是有什么方法设置的啊 ?
可能会出现上面的情况..如果采用response.sendRedirect("");我用了这个,好像这个问题就不太会存在,这个相对比较简单,如果复杂的话可能有还会出现上面的状况吧
如果要.do不加载装饰器,而且可以不进action而直接进jsp,并且也不加载装饰器,那就要在excludes里加上regiterprocess.do和register.jsp,或者像2楼说的用response.sendRedirect("");
一个项目一般JSP文件是很多的,不需要加载装饰器的文件一般很少,这时用include显然不合理。
SITEMESH是根据浏览器中的url来判断是否加载装饰器的