`
wyork
  • 浏览: 5233 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

探讨一种兼容性框架

阅读更多
服务器端的MVC和客户端的MVC能否一起使用?最近一直在想这个问题,看了很多帖子也没有找到比较好的解决方案。

以下是我的一些想法,首先判断客户端浏览器是否支持JS
-》当客户端浏览器支持JS的时候,利用JS当作控制层;
-》当客户端浏览器不支持JS的时候,利用Action当作控制层。

问题是需要这样的一个模版,既可以让JSP解析(赋值),也可以让JS解析。

方案1:如果这个模版是XSL写的,比较容易解决,可是大多数美工不会XSL,这样就需要模版必须为HTML的样子。

大家都知道HTML需要美工经常修改,尤其是首页。
如果美工每次修改,我们再给转化为XSL,工作应该不比JSP套版省事。

方案2:目前知道Trimpath对HTML解析比较好,如果写一个Trimpath的服务器端实现,是不是就解决这个问题了?

方案3:修改Trimpath适应Velocity或者Freemarker的语法,但是这两种翻译器明显象个二楞子,是匹配文件路径,当浏览器支持JS时也不放过。

苦恼啊!
分享到:
评论
6 楼 wyork 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;"
5 楼 wyork 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.
4 楼 giscat 2007-03-14  
搞得有点复杂了把,
   MVC,在C里把数据搞到M里,V到M里拿数据显示就完事了,没那么复杂把
  


 
3 楼 wyork 2007-03-14  
抛出异常的爱 写道
看javeeye的两种登陆方式

看过了,因为用TheWorld登陆不了,所以我一直用opera看javaeye.
2 楼 抛出异常的爱 2007-03-14  
看javeeye的两种登陆方式
1 楼 wyork 2007-03-13  
怎么没有人说话呀?都等了半天了。

有人知道一种服务器端类似于Trimpath的东西吗?或者类似于FreeMarker但不需要配置Filter的东西么?我感觉不用Filter才叫轻量级。

我知道jsp可以做到耦合xml和xsl,有耦合html和xml的东西么?
(CSDN的味道)挖塞,太直白了!

相关推荐

    行业分类-设备装置-一种兼容性测试平台搭建方法及装置.zip

    本主题聚焦于“行业分类-设备装置-一种兼容性测试平台搭建方法及装置”,旨在探讨如何构建一个高效的兼容性测试平台,以及设计用于此类测试的专用装置。通过这种方法,我们可以确保设备和系统的广泛兼容性,提升产品...

    winccV5V6兼容性列表.zip

    这个列表的重要性在于,它为用户在升级过程中提供了一种参考,避免因兼容性问题导致的系统不稳定或功能缺失。 1. **软件组件兼容性**:WinCC V6相对于V5,在软件架构上进行了优化,部分组件可能需要更新以确保与新...

    兼容性很强大的js日期控件

    本篇文章将深入探讨“兼容性很强大的js日期控件”这一主题,分享关于js日期控件的相关知识点,以及如何实现跨浏览器的兼容性。 1. **什么是js日期控件**: Js日期控件是JavaScript编程中用于处理日期和时间交互的...

    ZensUI为前端开发者提供了一个易上手的语义化的高兼容性的前端UI框架

    MVC(Model-View-Controller)模式是一种软件设计模式,它将应用程序分为模型、视图和控制器三个部分,以实现数据、显示和用户交互的分离。而UI库,如ZensUI,提供了丰富的界面元素和交互功能,帮助开发者快速构建视...

    JS的兼容性问题

    本文将围绕这一主题进行深入探讨,帮助开发者更好地理解和解决实际开发中遇到的各种兼容性挑战。 #### 二、什么是浏览器兼容性问题? 浏览器兼容性问题指的是同一个网页在不同浏览器中因为浏览器对于某些标准和...

    Firefox与IE浏览器的javascript兼容性问题

    JavaScript 是一种广泛应用于网页开发的脚本语言,它在不同的浏览器上可能存在兼容性问题,特别是老版本的 Internet Explorer (IE) 和 Mozilla Firefox (MF)。本文将深入探讨这两个浏览器之间的 JavaScript 兼容性...

    分流抢票基于.Net4.0框架开发,系统越新,兼容性越好,建议使用Win10,并及时更新版本

    《.Net4.0框架与Windows系统的兼容性探讨——以分流抢票软件为例》 在当今互联网技术高速发展的时代,网络购票已经成为人们生活中不可或缺的一部分,特别是在节假日或热门出行期间,如何快速有效地抢到火车票、飞机...

    兼容性很好的下拉菜单

    总的来说,"兼容性很好的下拉菜单"是一种实用且灵活的网页设计组件,它结合了易用性、可定制性和广泛兼容性。对于开发者而言,这意味着可以快速集成到项目中,同时保证在各种环境下都能提供出色的用户体验。通过选择...

    兼容性总结

    标题“兼容性总结”暗示了我们将探讨的是关于不同系统、平台、硬件或软件组件之间的兼容性问题以及如何解决这些问题的知识点。这篇博客可能深入剖析了如何确保软件产品在各种环境下的正常运行。 首先,兼容性可以...

    一种Web App开发框架.pdf

    本文将深入探讨一种Web App开发框架——jQuery Mobile。jQuery Mobile是jQuery在移动设备上的延伸,它不仅包含了对主流移动平台的支持,还提供了一套全面且统一的移动用户界面(UI)框架。这个框架的核心优势在于其...

    Android串口开发框架

    1. **兼容性**:确保框架在不同版本的Android系统上都能稳定运行,因为Android系统的碎片化可能导致兼容性问题。 2. **易用性**:提供简单直观的API,让开发者可以快速上手,减少学习曲线。 3. **错误处理**:良好...

    Igni是一款迷你php7框架用于构建PSR7和PSR15兼容REST服务

    它的轻量级设计、PSR兼容性以及对现代PHP最佳实践的支持,使得Igni成为快速构建可扩展Web应用的理想选择。无论你是初学者还是经验丰富的开发者,都可以通过掌握Igni框架来提升你的PHP开发技能。

    IE11兼容性问题完美解决(用户代理字符串)

    本文将深入探讨如何解决IE11(Internet Explorer 11)在Windows 8/8.1系统下的兼容性问题,主要关注用户代理字符串(User Agent String, 简称UA字符串)的应用与调整。 首先,我们需要理解什么是用户代理字符串。...

    探讨一种Android快速开发的MVP模式.pdf

    《探讨一种Android快速开发的MVP模式》这篇文章主要讨论了如何利用MVP模式以及Kotlin语言来提升Android应用的开发效率。MVP模式是Model-View-Presenter模式的简称,它是MVC模式的一种演变,特别适合大型、复杂的...

    行业分类-设备装置-一种通用的多媒体播放器框架.zip

    本资料主要探讨了一种适用于不同设备装置的通用多媒体播放器框架的设计与实现,旨在提供高效、稳定且兼容性广泛的解决方案。 多媒体播放器框架的核心目标是处理和解码音频、视频数据,以及与用户交互,如控制播放、...

    响应式设计css+兼容手机+平板+电脑PC 跨屏响应式布局前端开发CSS框架

    响应式设计是一种现代网页开发的重要技术,它使得网站可以适应不同设备的屏幕尺寸,包括手机、平板和电脑PC。在“响应式设计css+兼容手机+平板+电脑PC 跨屏响应式布局前端开发CSS框架”这个主题中,我们将深入探讨...

    LabVIEW通用视觉框架

    LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是由美国国家仪器公司(National Instruments, NI)开发的一种图形化编程语言。它以其独特的数据流编程模式和直观的“虚拟仪器”界面而著名,广泛...

    web管理的后台框架

    综上所述,这款基于EXTJS的后台管理框架提供了一种现代、兼容性好且用户友好的解决方案,它超越了传统的frameset技术,结合了HTML、JavaScript和其他前端技术,为Web开发带来了更高效和灵活的后台管理体验。...

    电信设备-一种可移动式显示屏连接框架.zip

    而“一种可移动式显示屏连接框架”在这个语境下,很可能指的是一个专为电信设备设计的创新显示解决方案。这种框架可能被用在基站、监控中心或者数据中心等场景,以便灵活展示和监控关键信息。 首先,我们来深入理解...

Global site tag (gtag.js) - Google Analytics