ZK数据绑定

数据绑定:数据绑定是一种机制,在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}

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>

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;
    }
}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值