ZK刷新Composer中的绑定值

时间:2014-02-03 18:10:39

标签: java zk

我在zul页面中绑定了一个对象,在zul页面内用户可以通过按编辑按钮编辑该对象的值。当用户单击编辑按钮时,对象的值在编写器内部发生更改(并且对象的值也会在数据库中更改)。然后,它返回到同一个zul页面。但是在zul中没有更改binded元素的值。只有刷新页面我才能看到变化。如何在不刷新页面的情况下更改绑定元素的值,或者通过刷新zul中的zk窗口?据我所知,有一种方法可以使用ModelBinding(zk: after confirmation box, page refresh issue, binder not working)在我的情况下,没有ModelBinding,当用户点击编辑按钮时,我必须在Composer中做。

public class EditUserDetailsComposer extends GenericForwardComposer<Component>{
    protected Window userDetailWin;
    private Person selectedUser;
    protected Textbox name;

     public void doAfterCompose(Component comp) throws Exception {
            super.doAfterCompose(comp);
            comp.setAttribute("userDetailController", this, true);
            //...
     }

    public void onClick$edit(){
           this.selectedUser.setName(name.getValue());
           //...
           userOper.update(selectedUser);//change db value
    }
    public Person getSelectedUser(){
        return this.selectedUser;
    }
    //...
 }

在zul页面内:

 <zk  xmlns:c="client" xmlns:x="xhtml">
   <?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" root="./userDetailWin"?>
   <window  id="userDetailWin" apply="project.component.EditUserDetailsComposer " >
    ........

     <div class="widget-body">
    <div class="widget-main">
    <div class="form-group">
        <div class="col-xs-12 col-sm-5">User Name</div>

        <div class="col-sm-reset">
        <textbox value = "@{userDetailController.selectedUser.name}" id="name"/>
        </div>
     </div>
    <separator></separator>
      </div>
   </div>
    ......
    <button class="btn btn-primary" label="Edit" id="edit"/> 

...

0 个答案:

没有答案