在ZK6-RC中最主要的功能更新来自于新的数据绑定框架。(
ZK6新功能)
在新的数据绑定框架中ZK引入了MVVM这种设计模式。关于MVVM的定义可以参考
这里
MVVM作为著名的MVC(Model/View/Controller)模式的一个变种,其主要目的在于将数据与逻辑从表示层中分离出来。也就是所对数据,逻辑和显示的解耦。
MVVM与MVC的基本目标是相同的,而MVVM比MVC更进一步的地方在于对页面控制逻辑和页面本身的解耦。
在传统的MVC框架中,为了改变视图,例如当单价超过1000时输入框显示红色背景,控制器必须持有对视图或视图中元素的引用,例如操作输入框。这样的设计在控制器中对视图有更好的控制,但是却失去了一部分灵活性。
失去的灵活性在于如果对于同一数据和逻辑有一个以上的视图,及多用户感官界面时。控制器对视图的应用所产生的依赖关系,使控制器本身失去了可重用性。
同样是上面的例子,如果同样的输入,对于有些用户提供了一个下拉列表的选择器。显然下拉列表和输入框不是相同的页面组件,其操作方式不同,但是有公用的页面逻辑。
MVVM模式通过ViewModel很好的解决了这一问题。ViewModel可以看做是一个逻辑视图,它包含了所有View的行为和状态,然后通过状态来同步实际的View.这样View可以看做是ViewModel的一个映射,而不同的View只要状态和行为相同便可以映射到相同的ViewModel上来。
在这个模式中最核心也是最巧妙的地方在于,
ViewModel中没有持有任何View中可视化元素的引用。
直入主题,下面用一段ZK官方的代码来比较一下两种模式的区别所在,原始页面在
这里
MVC的实现方法(ZK旧的数据绑定方法)
View: helloMVP.zul
<window apply="HelloComposer">
<label id="lbl"/>
<button id="btn" label="Show"/>
</window>
Controller: HelloComposer.java
public class HelloComposer extends GenericForwardComposer {
private Label lbl;
public void onClick$btn(Event event) {
lbl.setValue("Hello World!");
}
}
MVVM的实现方式
View: helloMVVM.zul
<window apply="org.zkoss.bind.BindComposer" viewModel="@bind(vm='org.zkoss.mvvm.examples.hello.HelloViewModel')">
<label value="@bind(vm.message)"/>
<button label="Show" onClick="@bind('showHello')"/>
</window>
ViewModel: HelloViewModel.java
public HelloViewModel {
private String message;
public String getMessage() {
return message;
}
@NotifyChange("message")
public void showHello() {
message = "Hello World!";
}
}
分享到:
相关推荐
MVVM模式是微软WPF和XAML环境中提出的一种新设计模式,它强调数据绑定和依赖注入。在MVVM中,模型仍然是数据层,视图是用户界面,而ViewModel则是连接模型和视图的桥梁,它包含了业务逻辑和数据转换,使视图能够直接...
zk项目搭建文档,用于zk项目的mvvm模式的 开发 项目。
在MVVM模式下,开发者可以分离视图的呈现逻辑和业务逻辑,提高代码的可维护性和可测试性。ViewModel作为数据模型和视图之间的桥梁,使得数据变化能自动反映到视图上,反之亦然。 ZK还支持AJAX技术,但无需编写复杂...
ZK的MVVM(Model-View-ViewModel)架构模式,使开发者能够更高效地处理数据绑定和用户交互。 其次,ZK 3.5.1版本中对Spring的整合是重要的升级点。Spring是一个全面的后端框架,涵盖了依赖注入、AOP(面向切面编程...
3. **数据绑定**:ZK的双向数据绑定功能使得UI和数据模型之间的同步变得简单,手册会阐述如何利用MVVM(Model-View-ViewModel)模式进行数据管理。 4. **事件处理**:讲解如何处理用户交互,包括点击事件、键盘事件...
ViewModel是MVVM模式中非常核心的概念,它包含了数据和行为,允许在不需要编写额外JavaScript代码的情况下与视图进行交互。手册中阐述了ViewModel中的初始化、数据和集合的操作,以及如何在ViewModel中使用@Init、@...
3. **数据绑定**:掌握MVVM(Model-View-ViewModel)模式,学习如何使用数据绑定将UI组件与后台数据模型关联起来,实现数据的实时更新。 4. **Ajax通信**:理解ZK如何使用Ajax技术实现无刷新交互,提升用户体验。 ...
##### MVVM模式 - **MVVM(Model-View-ViewModel)模式**:ZK也支持MVVM架构模式,这为开发者提供了一种更加现代化的方法来构建复杂的Web应用。 - **ViewModel**:ViewModel充当View和Model之间的桥梁,它负责处理...
4. **MVVM模式**:ZK支持Model-View-ViewModel(MVVM)设计模式,这使得业务逻辑和视图层分离,提高了代码的可维护性和复用性。 5. **国际化与本地化**:ZK框架内置了多语言支持,方便开发者创建面向全球用户的Web...
#### MVC与MVVM模式的应用 MVC(Model-View-Controller)和MVVM(Model-View-ViewModel)是现代Web应用常用的两种设计模式。ZK支持这两种模式,并提供了丰富的组件和工具来简化模式的实现。书中通过实例演示了如何...
总的来说,ZK是一个全面的Java Ajax框架,它提供了丰富的组件、直观的事件处理和高效的MVVM模式,简化了RIA的开发流程,尤其适合企业级应用的开发。结合其与Spring的深度集成以及对安全性和性能的关注,ZK成为了Java...
在本项目"zk+jsp实现登录、注册、修改...通过深入学习和实践,开发者可以进一步了解ZK的高级特性,如Composer、Event Handling、Composer和MVVM模式,以及如何结合其他技术如Spring和MyBatis来构建更复杂的企业级应用。
3. **MVVM模式**:ZK支持Model-View-ViewModel(MVVM)架构模式,这使得视图和数据模型之间的绑定变得更加简单,减少了代码量并提升了可维护性。 4. **表达式语言(EL)**:ZK使用一种特殊的表达式语言,允许在XML...
2. **MVVM(Model-View-ViewModel)架构**:ZK 8.5可能采用了MVVM设计模式,这是一种流行的应用程序设计架构,可以简化数据绑定和视图更新,提高代码的可读性和可维护性。 3. **事件处理**:ZK支持事件驱动编程,...
ZK支持MVVM(Model-View-ViewModel)模式,可以便捷地实现数据双向绑定。 4.5 动画和效果: ZK提供了多种动画效果,如淡入淡出、滑动等,增强用户体验。 总的来说,ZK通过其独特的设计理念和丰富的组件库,使得...
ZK的MVVM(Model-View-ViewModel)模式允许数据与视图自动同步,如`bind`属性可以将组件的值绑定到模型。 ZK提供了强大的组件库和丰富的功能,让开发者可以专注于业务逻辑,而不是复杂的UI实现。通过深入学习ZK,你...
ZK的MVVM(Model-View-ViewModel)架构模式也使得开发过程更为简洁和高效。 2. **JFreeChart**:JFreeChart库是一个功能强大的图表生成工具,支持多种图表类型,包括时间序列、饼图、条形图、散点图、甘特图等。它...
此外,ZK还支持多种绑定机制,如MVC(Model-View-Controller)和MVVM(Model-View-ViewModel),便于实现数据和视图的同步。 2.1 "Hello World!"章节通常是开发者入门的第一步,会展示一个简单的ZK应用实例,指导...
- **脚本**:支持在ZUML中使用脚本来控制组件的行为。 #### 七、Event Handling(事件处理) ZK的事件处理机制主要包括: - **监听**:注册事件监听器以响应特定事件。 - **触发**:通过组件触发事件。 - **转发**...
此外,ZK的MVVM(Model-View-ViewModel)架构模式有助于实现视图和数据模型的解耦,从而提高代码的可维护性和可扩展性。 HIBERNATE作为ORM工具,允许开发者用面向对象的方式来处理数据库操作,将Java对象直接映射到...