原创作者: Cecily
阅读:1113次
评论:0条
更新时间:2011-05-26
在近期试图以sitemesh来组织页面结构,整个页面的结构为:页面顶部可以安排公司标志及菜单(Header),左边是导航(Left),右边是主要的显示区域(Main),底部页角(Footer),除了主显示区其他部分大多数情况下都是静态的。在项目中,主显示区在很多情况下都要处于编辑,修改,查询,删除数据的状态,所以鉴于eXtremeTable在处理表格数据上的优势,就选择了使用eXtremeTable来实现Main这部分的功能。非常感谢ecside对eXtremeTable的进一步改进,就决定了使用ecside实现数据的增、删、改、查,因为作者明确声明未对ecside进行sitemesh的支持,所以知道需要做些调整,看了一下ecside的一些代码后,有了一个偷懒的做法。
我稍微测试了一下,发现在sitemesh中,通过Filter进行显示的页面被加载的代码只是body内部的代码,所以产生的问题就是在外部的代码不会被包含,如写在head中的link、script等。在显示eXtermeTable时也是同样遇到这样的问题。但是sitemesh装饰器中的body还是会正常使用的,所以一个笨笨的方法就是在sitemesh装饰器中将eXtermeTable进行初始化,如:
- <%@ page contentType="text/html; charset=utf8" pageEncoding="GBK"%>
- <%@ taglib uri="sitemesh-decorator" prefix="decorator" %>
- <%@ taglib uri="sitemesh-page" prefix="page" %>
- <html>
- <head>
- <META HTTP-EQUIV="content-type" CONTENT="text/html; charset=gbk"/>
- <title>
- <decorator:title default="装饰器页面..." />
- title>
- <decorator:head />
- head>
- <body onload="init();">
- <div style="position:absolute;top:0;left:0;width:1024;height:768;" align="center">
- <table border=0 cellpadding="0" cellspacing="0" width="778" align="center" id="marginSize">
- <!-- 第一行 -->
- <tr>
- <td colspan="2" width=820>
- <page:applyDecorator page="/jsp/Header.jsp" name="panel"/>
- td>
- tr>
- <!-- 第二行 -->
- <tr>
- <td rowspan="2">
- <page:applyDecorator page="/jsp/Left.jsp" name="panel"/>
- td>
- <td height="22">
- <page:applyDecorator page="/jsp/Menu.jsp" name="panel"/>
- td>
- tr>
- <!-- 第三行 -->
- <tr>
- <td height="478">
- <decorator:body />
- td>
- tr>
- <!-- 第四行 -->
- <tr>
- <td colspan="2">
- <page:applyDecorator page="/jsp/Footer.jsp" name="panel"/>
- td>
- tr>
- table>
- div>
- body>
通过上面的方法到是可以正常的将eXtremeTable 显示出来,但是问题是如果要显示的页面中没有包含eXtremeTable 的话,在body中的脚本init(),还是会运行的,因而还是有很大问题的,希望大家能提供更好的实现方法,最好是能摆脱对body标签中init()的依赖。继续学习中。
评论 共 0 条 请登录后发表评论