私はかなり長い間ZKフレームワークを研究しています。HTTP リクエストでパラメータを設定し、他のページでそれらを取得する方法を理解できませんでしたか?
@GlobalCommand
注釈も使用できませんでした。@GlobalCommand
これは実際にどのように機能しますか?
ポップアップまたはモーダル ダイアログに値を送信したくありません。sendRedirectなどを介して独立したzulページに値を送信したい...
この 2 つの例を挙げてください。
私が作った例@GlobalCommand
DemoVM.java
package com.nagarro.viewmodel;
import java.util.HashMap;
import org.zkoss.bind.BindUtils;
import org.zkoss.bind.annotation.BindingParam;
import org.zkoss.bind.annotation.Command;
import org.zkoss.bind.annotation.GlobalCommand;
import org.zkoss.zk.ui.Executions;
import org.zkoss.bind.annotation.NotifyChange;
public class DemoVM {
private String value1;
private String value2;
@Command
public void showModelWin() {
final HashMap<String, Object> map = new HashMap<String, Object>();
map.put("value1", this.value1);
map.put("value2", this.value2);
BindUtils.postGlobalCommand(null, null, "getValues", map);
Executions.sendRedirect("ModelWindow.zul");
}
@GlobalCommand
@NotifyChange({ "value1", "value2" })
public void refreshvalues(@BindingParam("returnvalue1") String str1,
@BindingParam("returnvalue2") String str2) {
this.value1 = str1;
this.value2 = str2;
}
public String getValue1() {
return value1;
}
public void setValue1(String value1) {
this.value1 = value1;
}
public String getValue2() {
return value2;
}
public void setValue2(String value2) {
this.value2 = value2;
}
}
デモ.zul
<?page title="Demo Page" contentType="text/html;charset=UTF-8"?>
<zk>
<window title="MVVM Modal window Passing arguments and return values"
border="normal" apply="org.zkoss.bind.BindComposer" id="DemoVM"
viewModel="@id('e') @init('com.nagarro.viewmodel.DemoVM')">
Type any value and Press the Model Window Button
<separator />
Value 1 :
<textbox value="@bind(e.value1)" />
Value 2 :
<textbox value="@bind(e.value2)" />
<button label="Model Window" onClick=" @command('showModelWin')" />
</window>
</zk>
ModelWindowVM.java
package com.nagarro.viewmodel;
import org.zkoss.bind.annotation.BindingParam;
import org.zkoss.bind.annotation.Command;
import org.zkoss.bind.annotation.ContextParam;
import org.zkoss.bind.annotation.ContextType;
import org.zkoss.bind.annotation.ExecutionArgParam;
import org.zkoss.bind.annotation.GlobalCommand;
import org.zkoss.bind.annotation.Init;
import org.zkoss.bind.annotation.NotifyChange;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.Executions;
import java.util.HashMap;
import org.zkoss.bind.BindUtils;
import java.util.Map;
public class ModelWindowVM {
private String value1;
private String value2;
@Init
public void init(@ContextParam(ContextType.VIEW) Component view,
@ExecutionArgParam("value1") String v1,
@ExecutionArgParam("value2") String v2) {
this.value1 = v1;
this.value2 = v2;
}
@Command
public void save() {
Map<String, Object> args = new HashMap<String, Object>();
args.put("returnvalue1", this.value1);
args.put("returnvalue2", this.value2);
BindUtils.postGlobalCommand(null, null, "refreshvalues", args);
Executions.sendRedirect("Demo.zul");
}
@GlobalCommand("getValues")
@NotifyChange({"value1","value2"})
public void getValues(@BindingParam("value1") String value1, @BindingParam("value2") String value2){
this.value1 = value1;
this.value2 = value2;
}
public String getValue1() {
return value1;
}
public void setValue1(String value1) {
this.value1 = value1;
}
public String getValue2() {
return value2;
}
public void setValue2(String value2) {
this.value2 = value2;
}
}
ModelWindow.zul
<?page title="Model Window Page" contentType="text/html;charset=UTF-8"?>
<zk>
<window id="modalDialog"
title="MVVM Modal window Passing arguments and retur values"
width="420px" height="auto" border="normal" minimizable="false"
maximizable="false" closable="true"
action="hide: slideUp" apply="org.zkoss.bind.BindComposer"
onCancel="@command('closeThis')"
viewModel="@id('e') @init('com.nagarro.viewmodel.ModelWindowVM')">
Change the values and Press the Ok Button to return changed
values.
<separator />
Value 1 :
<textbox value="@bind(e.value1)" />
Value 2 :
<textbox value="@bind(e.value2)" />
<button label="Ok" onClick="@command('save')" />
</window>
</zk>
BindUtils.postGlobalCommand() メソッドを使用しましたが、機能しません。