javascript - zk zAu.send 函数 - org.zkoss.zk.ui.event.MouseEvent 不能转换为 org.zkoss.zk.ui.event.ForwardEvent
问题描述
我正在集成 jquery 和 zk 项目。我的目标是将值从 js/jquery 端传递到 java 端,但徒劳无功。这是我参考的代码:使用 zAu 将数据从客户端发送到服务器 但是,存在错误:
java.lang.ClassCastException: org.zkoss.zk.ui.event.MouseEvent 不能转换为 org.zkoss.zk.ui.event.ForwardEvent
我看到其他人说我们必须将mouseevent
to 转换forwardevent
为才能获得 NOT NULLgetData()
值。
在我的Java方面:
public class TryHttpLenovo extends SelectorComposer<Component> {
@Listen("onClick=#btnHttp")
public void serverReceive(Event e) {
ForwardEvent forwardE = (ForwardEvent) e;
System.out.println("forwardE.getData()"+forwardE.getData());
}
}
在我的 http.zul 中:
<window apply="foo.TryHttpLenovo" xmlns:w="client">
<button id="btnHttp" w:onClick="sentToServer();">http send</button>
</window>
在我的 testhttp.js 中:
function sentToServer(){
var wgt=zk.Widget.$('btnHttp');
zAu.send(new zk.Event(wgt, "serverReceive", {foo: 'my data'}, {toServer:true}));
}
解决方案
经过几次反复试验,我终于解决了这个问题!!!!解决方案是扩展 GenericForwardComposer。我还调整了一些其他的东西,但唯一重要的变化是扩展了 GenericForwardComposer 而不是 SelectorComposer。
我的解决方案中不需要 @Listen 注释。
在.java中
public class TryHttpV2 extends GenericForwardComposer {
public void onUser2$info(Event event) {
ForwardEvent forwardE = (ForwardEvent) event;
System.out.println("forwardE.getOrigin().getData(): " + forwardE.getOrigin().getData());
}
}
在 .js 中
function sendToServer(){
payload = "using generic composer";
zAu.send(new zk.Event(zk.Widget.$(this), 'onUser2', payload));
}
在.zul
<?page title="try using generic composer" contentType="text/html;charset=UTF-8"?>
<?script src="/js/tryhttp_v2.js" ?>
<zk xmlns="http://www.zkoss.org/2005/zul">
<window id="info" apply="foo.TryHttpV2" xmlns:w="client">
<button id="btnExec" w:onClick="sendToServer();" label="to be tested button" />
</window>
</zk>