zk zAu.send function - org.zkoss.zk.ui.event.MouseEvent не может быть приведен к org.zkoss.zk.ui.event.ForwardEvent - PullRequest
0 голосов
/ 02 января 2019

Я интегрирую проект jquery и zk. Моя цель - передать значение со стороны js / jquery на сторону java, но тщетно. Вот код, на который я ссылаюсь: используйте zAu для отправки данных с клиента на сервер Однако существует ошибка:

java.lang.ClassCastException: org.zkoss.zk.ui.event.MouseEvent невозможно преобразовать в org.zkoss.zk.ui.event.ForwardEvent

Я видел, как другой человек говорил, что мы должны привести mouseevent к forwardevent, чтобы получить значение NOT NULL getData().

На моей стороне 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}));
}

1 Ответ

0 голосов
/ 02 января 2019

После нескольких проб и ошибок я наконец-то решаю это !!!! Решение заключается в расширении 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));
}

в .зуле

<?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>
...