ZK数据绑定
来源:互联网 发布:备案域名后缀 编辑:程序博客网 时间:2024/06/05 10:00
数据绑定:数据绑定是一种机制,在UI组件和数据源之间自动完成数据复制。应用开发人员只需告诉绑定管理器UI组件和数据的联系。然后数据绑定期会自动完成加载(将数据加载到UI)并保存(UI保存到数据源)
1.在zul中添加
<? init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" ?>
2.有两种形式
2.1. window 用 apply 来实现 @{win$composer.books}
2.2. window 用 use 来实现 @{win.books}
composer
package com.ace.zk.composer;
/*public class BookComposer extends Window{*/
public class BookComposer extends SelectorComposer<Component> {
private final List<Book> books = new ArrayList<Book>();
private Book book;
/*不用数据绑定的做法
@Wire
private Textbox namebox;
@Wire
private Textbox authorbox;
@Wire
private Doublebox pricebox;
@Wire
private Label pubbox;
@Wire
private Listbox listbox;
@Listen("onSelect = #listbox")
public void selected() {
book = listbox.getSelectedItem().getValue();
namebox.setValue(book.getName());
authorbox.setValue(book.getAuthor());
pricebox.setValue(book.getPrice());
pubbox.setValue(book.getPub());
}*/
/**
* @return the book
*/
public Book getBook() {
return book;
}
/**
* @param book the book to set
*/
public void setBook(final Book book) {
this.book = book;
}
@Wire
private Window win;
/**
* @return the books
*/
public List<Book> getBooks() {
books.add(new Book("ace", "ace", "ace", 20.0));
books.add(new Book("ace1", "ace1", "ace1", 20.0));
books.add(new Book("ace2", "ace2", "ace2", 20.0));
books.add(new Book("ace3", "ace3", "ace3", 20.0));
books.add(new Book("ace4", "ace4", "ace4", 20.0));
books.add(new Book("ace5", "ace5", "ace5", 20.0));
books.add(new Book("ace6", "ace6", "ace6", 20.0));
books.add(new Book("ace7", "ace7", "ace7", 20.0));
return books;
}
}
3.实例
bookDatabind.zul
<?xml version="1.0" encoding="UTF-8"?>
<?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" ?> <!--1.在zul中添加-->
<!--use实现@{win.books} -->
<!-- <window id="win" use="com.ace.zk.composer.BookComposer" title="ZK Tutorial" width="1024px" border="normal"> -->
<!--apply实现 @{win$composer.books} -->
<window id="win" apply="com.ace.zk.composer.BookComposer" title="ZK Tutorial" width="1024px" border="normal">
<listbox model="@{win$composer.books}" selectedItem="@{win$composer.book}"> <!-- @{win.books} -->
<listhead sizable="true">
<listheader label="名称" width="100px" sort="auto(name)" />
<listheader label="作者" width="250px" sort="auto(author)" />
<listheader label="出版社" width="250px" sort="auto(pub)" />
<listheader label="价格" width="250px" sort="auto(price)" />
</listhead>
<listitem self="@{each=book}">
<listcell label="@{book.name}" />
<listcell label="@{book.author}" />
<listcell label="@{book.pub}" />
<listcell label="@{book.price}"/>
</listitem>
</listbox>
<grid>
<columns>
<column label="名称" align="center" />
<column label="作者" align="center" />
<column label="价格" align="center" />
<column label="出版社" align="center" />
</columns>
<rows>
<row>
<textbox id="namebox" value="@{win$composer.book.name}" width="95%" />
<textbox id="authorbox" value="@{win$composer.book.author}" width="95%" />
<doublebox id="pricebox" value="@{win$composer.book.price}" width="95px" />
<label id="pubbox" value="@{win$composer.book.pub}" />
</row>
</rows>
</grid>
</window>
bookDatabind.zul
<?xml version="1.0" encoding="UTF-8"?>
<?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" ?> <!--1.在zul中添加-->
<!--use实现@{win.books} -->
<!-- <window id="win" use="com.ace.zk.composer.BookComposer" title="ZK Tutorial" width="1024px" border="normal"> -->
<!--apply实现 @{win$composer.books} -->
<window id="win" apply="com.ace.zk.composer.BookComposer" title="ZK Tutorial" width="1024px" border="normal">
<listbox model="@{win$composer.books}" selectedItem="@{win$composer.book}"> <!-- @{win.books} -->
<listhead sizable="true">
<listheader label="名称" width="100px" sort="auto(name)" />
<listheader label="作者" width="250px" sort="auto(author)" />
<listheader label="出版社" width="250px" sort="auto(pub)" />
<listheader label="价格" width="250px" sort="auto(price)" />
</listhead>
<listitem self="@{each=book}">
<listcell label="@{book.name}" />
<listcell label="@{book.author}" />
<listcell label="@{book.pub}" />
<listcell label="@{book.price}"/>
</listitem>
</listbox>
<grid>
<columns>
<column label="名称" align="center" />
<column label="作者" align="center" />
<column label="价格" align="center" />
<column label="出版社" align="center" />
</columns>
<rows>
<row>
<textbox id="namebox" value="@{win$composer.book.name}" width="95%" />
<textbox id="authorbox" value="@{win$composer.book.author}" width="95%" />
<doublebox id="pricebox" value="@{win$composer.book.price}" width="95px" />
<label id="pubbox" value="@{win$composer.book.pub}" />
</row>
</rows>
</grid>
</window>
composer
package com.ace.zk.composer;
/*public class BookComposer extends Window{*/
public class BookComposer extends SelectorComposer<Component> {
private final List<Book> books = new ArrayList<Book>();
private Book book;
/*不用数据绑定的做法
@Wire
private Textbox namebox;
@Wire
private Textbox authorbox;
@Wire
private Doublebox pricebox;
@Wire
private Label pubbox;
@Wire
private Listbox listbox;
@Listen("onSelect = #listbox")
public void selected() {
book = listbox.getSelectedItem().getValue();
namebox.setValue(book.getName());
authorbox.setValue(book.getAuthor());
pricebox.setValue(book.getPrice());
pubbox.setValue(book.getPub());
}*/
/**
* @return the book
*/
public Book getBook() {
return book;
}
/**
* @param book the book to set
*/
public void setBook(final Book book) {
this.book = book;
}
@Wire
private Window win;
/**
* @return the books
*/
public List<Book> getBooks() {
books.add(new Book("ace", "ace", "ace", 20.0));
books.add(new Book("ace1", "ace1", "ace1", 20.0));
books.add(new Book("ace2", "ace2", "ace2", 20.0));
books.add(new Book("ace3", "ace3", "ace3", 20.0));
books.add(new Book("ace4", "ace4", "ace4", 20.0));
books.add(new Book("ace5", "ace5", "ace5", 20.0));
books.add(new Book("ace6", "ace6", "ace6", 20.0));
books.add(new Book("ace7", "ace7", "ace7", 20.0));
return books;
}
}
- zk 3.6数据绑定
- ZK数据绑定
- zk数据绑定
- zk 数据绑定实例(grid嵌套)
- ZK绑定
- zk
- zk
- zk
- ZK
- zk
- zK
- ZK
- ZK Server Push实现数据主动推送
- kafka ZK 元数据存储机制
- 数据绑定
- 数据绑定
- 数据绑定
- 数据绑定
- Android应用--QR的生成(二维码)
- MySQL优化大全
- C程序显示执行进度信息
- 我的AutoHotkey配置
- C# 实现复杂对象的序列化与反序列化
- ZK数据绑定
- vim配置及插件安装管理(超级详细)
- Android 实现拨打电话功能
- TNS-12516及ORA-12516错误解决
- iOS应用程序生命周期(前后台切换,应用的各种状态)详解
- difference-between-unchecked-exception-or-runtime-exception
- mac修改机器名、提示符、隐藏\显示文件夹
- android 报错:java.lang.NoClassDefFoundError:
- Android预定义样式