浏览 4925 次
锁定老帖子 主题:探讨一种兼容性框架
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-03-13
以下是我的一些想法,首先判断客户端浏览器是否支持JS -》当客户端浏览器支持JS的时候,利用JS当作控制层; -》当客户端浏览器不支持JS的时候,利用Action当作控制层。 问题是需要这样的一个模版,既可以让JSP解析(赋值),也可以让JS解析。 方案1:如果这个模版是XSL写的,比较容易解决,可是大多数美工不会XSL,这样就需要模版必须为HTML的样子。 大家都知道HTML需要美工经常修改,尤其是首页。 如果美工每次修改,我们再给转化为XSL,工作应该不比JSP套版省事。 方案2:目前知道Trimpath对HTML解析比较好,如果写一个Trimpath的服务器端实现,是不是就解决这个问题了? 方案3:修改Trimpath适应Velocity或者Freemarker的语法,但是这两种翻译器明显象个二楞子,是匹配文件路径,当浏览器支持JS时也不放过。 苦恼啊! 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-03-13
怎么没有人说话呀?都等了半天了。
有人知道一种服务器端类似于Trimpath的东西吗?或者类似于FreeMarker但不需要配置Filter的东西么?我感觉不用Filter才叫轻量级。 我知道jsp可以做到耦合xml和xsl,有耦合html和xml的东西么? (CSDN的味道)挖塞,太直白了! |
|
返回顶楼 | |
发表时间:2007-03-14
看javeeye的两种登陆方式
|
|
返回顶楼 | |
发表时间:2007-03-14
抛出异常的爱 写道 看javeeye的两种登陆方式
看过了,因为用TheWorld登陆不了,所以我一直用opera看javaeye. |
|
返回顶楼 | |
发表时间:2007-03-14
搞得有点复杂了把,
MVC,在C里把数据搞到M里,V到M里拿数据显示就完事了,没那么复杂把 |
|
返回顶楼 | |
发表时间:2007-03-14
giscat 写道 搞得有点复杂了把,
MVC,在C里把数据搞到M里,V到M里拿数据显示就完事了,没那么复杂把 理是这个理 ,举个例子吧 : 这是一个非常简单的典型模板, number_dst也可以这样写<div id="number_dst"></div>,后面讨论 //index.html <html> <head> <script src="prototype.js"></script> <script src="index.js"></script> </head> <body> <div id="number_src" style="display:none;"> 当前有${number}人在线。 </div> <form method="post" action="index.do"> <input type="submit" id="get_number" value="获取当前在线人数"/> <div id="number_dst"> 当前有${number}人在线。 </div> </form> </body> </html> 到这里,美工完事了,接下来为支持js的浏览器写Control //index.js var get_number = $('get_number'); var number_src = $('number_src'); var number_dst = $('number_dst'); get_number.onclick = function(){ //简化代码,如何获得connection这里不讨论 connection.getNumber(function (result) { if(result!=null){ number_dst.innerHTML=TrimPath.processDOMTemplate(number_src.id, result); } }); return false; //返回false,不post到index.do } 如果浏览器不支持js怎么办呢?post到index.do index.do怎么写?这里是我犯难的事情。 //index.do String number = someObj.getNumber();//假定返回正确的值 ..... 如果采用方案1,index.html是xsl的文件,可以把number变为xml的进行耦合。问题是xsl和html之间的转化比较费人力。 如果采用方案3,把number放到session里面,配置freemarker或者velocity对index.html进行填值。 问题1:第一次访问index.do的时候,id="number_src"的变量${number}也填值了,不是我所希望的。 若第一次访问不进index.do.而进入index.html,freemarker或者velocity也不会对index.html放过。 若复制一个index.html为index.htm似乎解决了,那么还有问题:Trimpath和freemarker,velocity语法类似,毕竟不一样,需要修改trimpath为Freemarker的语法(比Freemarker更容易改)。 如果采用方案2:index.do中判断request参数是否支持js(或者不判断,都post过来了,肯定不支持),如果不支持,用trimpath的服务器端把number耦合到index.html 里面进行输出。 写到这里似乎有了办法,有更好的方法么? 忘记了从哪里看到要尽量少用filter,总感觉filter比较傻,而且还需要配置。 感觉方案2和方案3的差别:前者需要写trimpath的服务器端,后者需要修改trimpath的js. |
|
返回顶楼 | |
发表时间:2007-03-14
index.html可以这样写
//index.html <html> <head> <script src="prototype.js"></script> <script src="index.js"></script> </head> <body> <form method="post" action="index.do"> <input type="submit" id="get_number" value="获取当前在线人数"/> <div id="number_src" style="display:none;"> 当前有${number}人在线。 </div> <div id="number_dst"></div> </form> </body> </html> index.do中replace掉style="display:none;" |
|
返回顶楼 | |