0

私の zkoss コードは、Java メソッドからの値をバインドしていません。

<window border="normal" id="home"
    apply="com.test.HomeController">
    <caption label="@{home.name}"></caption>
            <button label="text"></button>
</window>


public class HomeController extends GenericForwardComposer{

    public  String getName() {
        return "MY ZKOSS";
    }

}

ウィンドウのキャプションに MY ZKOSS が表示されていません。誰が問題が何であるか教えてもらえますか?

4

3 に答える 3

6

ZK は MVVM パターンを使用できます。

<window id="win" apply="org.zkoss.bind.BindComposer" viewModel="@id('vm') @init('myController')">
     <caption label="@load(vm.myText)"></caption>
</window>


public class myController {
private String name = "MY ZKOSS";

    public  String getName() {
        return name;
    }

public  void setName(String name) {
        this.name =  name;
    }
}

ZK 開発者リファレンス - MVVM

于 2012-10-24T14:30:06.663 に答える
2

GenericForwardComposer から拡張されたコントローラーのゲッターを介した値バインディングは、次のような EL 式で機能しますlabel="${$composer.name}"

使用しようとしているデータバインディングの種類は、コントローラーがコンポーネントの基本クラスから拡張されている場合に機能します。たとえば、の代わりにHomeController拡張されます。これを機能させるには、以下に示すように変更しますWindowGenericForwardComposerapplyuse

<?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" ?>
<window border="normal" id="home" use="com.test.HomeController">
    <caption label="@{home.name}"></caption>
    <button label="text"></button>
</window>
于 2012-10-22T07:42:33.257 に答える
0

これはあなたを助けるかもしれません。

コントローラ:

package foo;
import org.zkoss.zk.ui.select.SelectorComposer;
import org.zkoss.zk.ui.select.annotation.Wire;
import org.zkoss.zk.ui.select.annotation.Listen;
import org.zkoss.zul.*;

public class MyComposer extends SelectorComposer<Window> {

    @Wire
    Textbox input;
    @Wire
    Label output;

    @Listen("onClick=#ok")
    public void submit() {
        output.setValue(input.getValue());
    }
    @Listen("onClick=#cancel")
    public void cancel() {
        output.setValue("");
    }

}

そしてあなたのzulで:

<window apply="foo.MyComposer">
    <div>
        Input: <textbox id="input" />
    </div>
    <div>
        Output: <label id="output" />
    </div>
    <button id="ok" label="Submit" />
    <button id="cancel" label="Clear" />
</window>

メンバ フィールドの input と output には、それぞれ "input" と "output" の識別子を持つコンポーネントが自動的に割り当てられます。ユーザーが対応するボタンをクリックすると、メソッド submit() および cancel() が呼び出されます。

http://books.zkoss.org/wiki/ZK_Developer%27s_Reference/MVC/Controller/Composer#Custom_Controller

于 2015-03-10T22:30:10.420 に答える