1

いくつかのアイテムを含むタブボックスがあります。ユーザーがタブをクリックしたときにデータを更新する必要があります。コンテナでリフレッシュを行うクリックコマンドがありますが、ページのリフレッシュを作成できません。これは .zul ページの項目の例です:

<row valign="top">
    <label value="Title with diacritics" zclass="field_label"/> 
    <textbox value="@{main$composer.inventory.titleTranslitDcr, is-live=true}"  hflex="1"/>
</row>

これは、Beanに設定しようとしたこのデータの方法です:

public void populateTitleStatementFields()
{
    this.titleTranslitDcr = Commons.getString(context, "/xml/TitleTranslitDCR", EMPTY);
}

このコードでは、文字列の有効な値を取得していると確信しています。ただし、F5 で完全にリロードするまで何も機能しません。

サンプルについては、5 つのインクルードで更新する必要がある約 50 以上のフィールドがあります。2つのページを開いてこれをテストしました-1つはデータをdbに保存し、他の変更タブで変更を探しましたが、dbから正しい値を取得しても何も起こりませんでした(別のブラウザインスタンスで変更されました) EDIT 11.04.2013 :

これに近いものを発見。チュートリアルでは onclick イベントから .zul ページをリロードしていますが、@Command と組み合わせる必要があると思います。それが機能するかどうかをテストするためだけにそれを行う方法はありますか?

4

1 に答える 1

1

以下のように ZK MVVM でこれを行うことができます。

test.zul

<zk>
    <div apply="org.zkoss.bind.BindComposer"
        viewModel="@id('vm') @init('test.TestVM')">
        <tabbox onSelect="@command('updateData')">
            <tabs>
                <tab label="tab 1" />
                <tab label="tab 2" />
            </tabs>
            <tabpanels>
                <tabpanel>
                    <label value="@load(vm.dataOne)" />
                </tabpanel>
                <tabpanel>
                    <label value="@load(vm.dataTwo)" />
                </tabpanel>
            </tabpanels>
        </tabbox>
    </div>
</zk>

TestVM.java

package test;

import org.zkoss.bind.annotation.Command;
import org.zkoss.bind.annotation.NotifyChange;


public class TestVM {
    public String getDataOne () {
        return System.currentTimeMillis() % 19 + "";
    }
    public String getDataTwo () {
        return System.currentTimeMillis() % 91 + "";
    }
    @Command
    @NotifyChange({"dataOne", "dataTwo"})
    public void updateData () {

    }
}
于 2013-04-12T07:28:02.253 に答える