mvvm 耗时加载进度条_ZK的实际应用:MVVM –加载和渲染数据

mvvm 耗时加载进度条

先前的文章简要介绍了RIA框架ZK,以及其CSS Selector启发的控制器机制如何通过使在控制器类中引用UI组件的任务变得相对灵活来减轻UI更改所带来的一些负担。

然后,我们在上一篇文章中探讨了ZK中的MVVM模式如何允许单个ViewModel提供不同的视图。

这篇文章标志着一系列文章的开始,这些文章将逐步使用ZK从头开始构建一个简单的应用程序。

目的

现在,我们将构建一个简单的库存管理功能,该功能仅限于将数据收集从数据库加载和呈现到表中。

ZK实战功能

  • MVVM:加载
  • 模板标签

使用MVVM将数据加载并渲染到表中

假设有一个名为“ Item”的对象的集合,并且有一个DataService类,该类负责缓存和与数据库(MongoDB和Morphia)进行通信。

@Entity("items")
public class Item {@Idprivate ObjectId id;private String name;private String model;private int qty;private float price;private Date datemod;// getters & setters

要将数据呈现到ZK中所示的表中,我们需要实现以下部分:

  • 一个将用作我们的ViewModel的POJO
  • ZK标记文件作为我们的演示文稿

ViewModel类

public class InventoryVM {private List<item> items;public List<item> getItems() throws Exception{items = DataService.getInstance().getAllItems();return items;}}
  • 第3行,需要将项目列表声明为VM类的属性
  • 第5行,我们需要提供一个getter方法,以便Binder可以检索项目列表。 概括地说,活页夹保留了对UI组件和ViewModel的引用,因此,当View中触发事件时,它可以使双方的数据以及ViewModel中的调用命令方法保持同步。

标记

<window apply="org.zkoss.bind.BindComposer" viewModel="@id('vm') @init('lab.sphota.zk.ctrl.InventoryVM')"><listbox model="@load(vm.items) "><listhead><listheader label="Name" /><listheader label="Model" /><listheader label="Quantity" /><listheader label="Unit Price"/><listheader label="Last Modified" /></listhead><template name="model" var="item" ><listitem><listcell><textbox value="@load(item.name)" inplace="true" /></listcell><listcell><textbox value="@load(item.model)" inplace="true" /></listcell><listcell><spinner value="@load(item.qty)"  inplace="true" /></listcell><listcell><decimalbox value="@load(item.price)" inplace="true" format="#,###.00"/></listcell><listcell label="@load(item.datemod)" /></listitem></template></listbox>
</window>
  • 第1行,我们应用ZK的BindComposer的默认实现。 它负责实例化我们的VM实例以及Binder实例。
  • 第2行,我们提供了要实例化的ViewModel的完整类名,并为其提供了ID(在本例中为“ vm”),以供将来参考
  • 在第3行中,我们将一个数据模型(作为ViewModel实例的属性制作)分配给列表框。
  • 在第11行,我们指示Template组件迭代给定的集合。 我们还声明了一个名为“ item”的变量,该变量将迭代处理集合中的每个Item对象。 或者,我们可以省略变量声明,并使用关键字“ each”来引用数据对象(Item)。
  • 在第14、17、20、23、26行中,我们检索要在列表框中显示的Item属性。
  • 在这里,我们使用Listcell内的输入元素(文本框,微调框,十进制框)来预期将来可编辑表的实现。 如果未选择这些属性,则“ inplace = true”属性会将这些输入元素呈现为常规标签。



结语

ZK Binder是ZK MVVM工作的核心。 它包含对UI组件和ViewModel的引用。 ViewModel类只是一个POJO,我们在其中声明和分配数据模型。 它公开了getter方法,因此Binder可以检索数据并将其绑定到它们各自的带注释的UI组件。 然后,template标签允许我们相对于数据模型迭代地呈现UI组件。 在我们的例子中,使用模板标记通过bean集合迭代地呈现5个Listcell的行,每个单元具有bean属性。

在下一篇文章中,我们将实现“添加”功能,以便我们可以使用MVVM的表单绑定将新条目保存到现有清单中。

参考 ZK开发人员参考

参考: ZK in Action [0]:MVVM –从Tech Dojo博客上的JCG合作伙伴 Lance Lu 加载和渲染数据 。


翻译自: https://www.javacodegeeks.com/2012/07/zk-in-action-mvvm-load-and-render-data.html

mvvm 耗时加载进度条

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/354811.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

@Autowired和可选依赖项

Autowired注释使我们的生活更轻松。 如果我们在类的属性上使用它&#xff0c;也可能导致代码量减少。 我们既不需要构造函数也不需要setter方法。 乍一看看起来很棒&#xff0c;但好处很少是没有成本的。 今天&#xff0c;我想让您知道必须支付的费用。 Autowired&#xff08…

¥人民币符号怎么打

有一种快捷键的方法&#xff08;不方便记忆&#xff09; 按住Alt0165 此方法适合任何输入法。转载于:https://www.cnblogs.com/wulibo/p/7575348.html

android 使用javascript,可以在Android中使用JavaScript吗?

可以在Android中使用JavaScript吗&#xff1f;如果是这样&#xff0c;怎么办&#xff1f;请提供一些示例。谢谢。最佳答案我在这里参加聚会很晚&#xff0c;但是我确实有这个需要。 iOS 7现在包含JavaScriptCorenative &#xff0c;并且确实很容易使用(尽管文档有限)。问题是我…

[POJ2151]Check the difficulty of problems(概率DP)

传送门 每个队之间是独立的 f[i][j]表示当前队伍前i个题答对j个的概率 满足条件的概率 全部方案&#xff08;除去答对0&#xff09;的概率 - 不满足条件的概率&#xff08;每个队伍答对1~n-1&#xff09; #include <cstdio> #include <cstring> #define N 101int …

ejb jsf jpa_完整的WebApplication JSF EJB JPA JAAS –第2部分

ejb jsf jpa视图–创建和JSF设置 本教程是第1部分的继续。 让我们创建一个新的Dynamic Web Project 。 如下图所示创建它&#xff1a; 请注意&#xff1a;在某些时候&#xff0c;Eclipse会询问您是否要添加JSF功能&#xff08;自动完成&#xff09;&#xff0c;然后启用它。 …

android ios logo原型,iOS关于logo和LaunchImage处理

1、软件测试的时候&#xff0c;程序员总会被测试的妹纸问到&#xff1a;这个logo怎么是黑底的呀&#xff1f;这个logo明明提供的正方形的&#xff0c;显示出来的怎么是圆角的&#xff1f;安卓都是正方形的呢&#xff1f;直接根据效果图来解释吧。不包含Alpha通道的logo包含Alph…

JavaFX:TouchGesture内存泄漏?

在我的一个项目中&#xff0c;最近几天我在与内存泄漏作斗争&#xff08;是……“耦合”&#xff09;&#xff0c;我得出的结论是可能存在与触摸/滚动手势有关的问题。 在下面的示例中&#xff0c;我有两个按钮。 第一个创建具有一千行的列表视图&#xff0c;第二个将其删除。 …

第2章 状态机思维与状态机变量

12312312转载于:https://www.cnblogs.com/ZHONGZHENHUA/p/7590199.html

荣耀v40可以升级华为鸿蒙,网传荣耀V40机型也能升级鸿蒙OS 首批更新机型有望是这5款...

此前华为官方曾透露&#xff0c;所有可以升级到EMUI11系统的华为荣耀手机以后都可以升级更新到华为鸿蒙2.0系统&#xff0c;首批可以升级至EMUI11的手机和平板电脑共有55款。后续&#xff0c;又有传闻称&#xff0c;麒麟710处理器以上机型很可能都能更新EMUI11&#xff0c;也就…

Calendar

1. before&#xff0c;after 方法 &#xff0c;源码为&#xff1a; public boolean after(Object when) {return when instanceof Calendar&& compareTo((Calendar)when) > 0;} 这两方法参数类型是 Object 但只有是 Calendar 类型时才有可能返回true。转载于:https…

Android检测是否有悬浮窗,Android 获取判断是否有悬浮窗权限的方法

现在很多应用都会用到悬浮窗&#xff0c;很多国产rom把悬浮窗权限加入控制了&#xff0c;你就需要判断是否有悬浮窗权限&#xff0c;然后做对应操作。Android 原生有自带权限管理的&#xff0c;只是被隐藏了。看android源码在android.app下就有个AppOpsManager类。类说明如下&a…

在虚拟机中的Ubuntu搭建java开发环境

前提&#xff1a; 安装好虚拟机 在虚拟机中装好了Ubuntu系统 以上两步请参见我的博客&#xff08;python进阶&#xff09; 1 安装JDK 1.1 到官网下载jdk压缩包并保存在本地 jdk1.8&#xff1a;点击前往 1.2 在Ubuntu中创建一个文件用于存放下载好的jdk文件 利用 rz 命令将下载到…

mockito_Mockito和Hamcrest的试驾制造商

mockito过去&#xff0c;很多人问我是否测试吸气剂和吸气剂&#xff08;属性&#xff0c;属性等&#xff09;。 他们还问我是否测试我的建筑商。 在我看来&#xff0c;答案取决于情况。 当使用遗留代码时&#xff0c;我不会费心去测试数据结构&#xff0c;这意味着对象只带有ge…

导入一个android项目需要改什么意思,导入别人的Android Studio项目前要修改的文件...

AS在导入项目过程中会检查项目中所需的gradle版本 sdk版本等本地是否有, 没有的话就会从官网下载, 众所周知要想从谷歌官网下载东西在我朝是十分困难的.所以需要修改成本地有的.主要改三个个第一个地方,修改android gradle插件版本号1.找到项目目录下的build.gradleproject/bui…

如何在单个API中支持Java 6、8、9

借助jOOQ 3.7&#xff0c;我们终于添加了对Java 8功能的正式支持。 这为许多不错的改进打开了大门&#xff0c;例如&#xff1a; 创建结果流 try (Stream<Record2<String, String>> stream DSL.using(configuration).select(FIRST_NAME, LAST_NAME).from(PERSON)…

Struts2中通过Ajax传递json数据

1、导入Struts2所需要的jar包 下载Struts2的jar包时&#xff0c;可以下载struts-2.5.13-min-lib.zip&#xff0c;然后放到项目的/WebContent/WEB-INF/lib路径下struts-2.5.13-min-lib只包含以下jar包&#xff1a;   commons-fileupload-1.3.3.jar commons-io-2.5.jar commons…

c语言中 各种括号应成对出现,C语言::验证花括号成对出现

题目要求编写一个程序,它从标准输入(终端)读取C源代码,并验证所有的花括号都正确的成对出现。注意&#xff1a;你不必担心注释内部、字符串常量内部和字符常量形式的花括号。算法分析我们先判断左花括号的数量是否相等。如果左右花括号数量不等,肯定不成对&#xff01;如果左右…

[js高手之路] html5 canvas系列教程 - 线条样式(lineWidth,lineCap,lineJoin,setLineDash)

上文&#xff0c;写完弧度与贝塞尔曲线[js高手之路] html5 canvas系列教程 - arcTo(弧度与二次,三次贝塞尔曲线以及在线工具)&#xff0c;本文主要是关于线条的样式设置 lineWidth: 设置线条的宽度&#xff0c;值是一个数值&#xff0c;如lineWidth 5. 画3条不同宽度的线条&am…

在线斯诺克html5,用HTML 5打造斯诺克桌球俱乐部

本文介绍了如何利用HTML5技术来打造一款非常酷的斯诺克桌球游戏&#xff0c;文章中详细地列出了开发的全过程&#xff0c;并解说了实现这个游戏的几个关键点。在文章末尾我向大家提供了游戏的在线实例页面和源码下载链接&#xff0c;如果你只是想玩玩(需要使用支持HTML5的浏览器…

jpa jsf_完整的Web应用程序Tomcat JSF Primefaces JPA Hibernate –第3部分

jpa jsfPrimefaces AutoComplete&#xff0c;JSF转换器 这篇文章从第一部分和第二部分继续。 JSF拥有Converter工具&#xff0c;可以帮助我们从用户视图中获取一些数据并将其转换为从数据库或缓存中加载的对象。 在“ com.converter”包中&#xff0c;创建以下类&#xff1a;…