Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从ZK页面调用后端方法?_Java_Zk - Fatal编程技术网

Java 如何从ZK页面调用后端方法?

Java 如何从ZK页面调用后端方法?,java,zk,Java,Zk,我想用onClick方法从页面动态生成图像。但不管我怎么努力,都失败了 我在后端类中的代码如下所示: public class RuleController extends SelectorComposer<Component> { ....... Image imageTemp = (Image)image.clone(); ZScript script = new ZScript("java","delCondition1("+indexCon1+")")

我想用onClick方法从页面动态生成图像。但不管我怎么努力,都失败了

我在后端类中的代码如下所示:

public class RuleController  extends SelectorComposer<Component> {
     .......
   Image imageTemp = (Image)image.clone();
   ZScript script = new ZScript("java","delCondition1("+indexCon1+")");
   EventHandler evthdl = new EventHandler(script);
   imageTemp.addEventHandler("onClick", evthdl);
   ........

   public void delCondition1(int index){
      .........
   }
}

似乎onClick触发的java代码找不到方法:delCondition1(int),为什么?如何设置要调用的方法?

您不应该在生产中使用
zscript
,这仅适用于原型制作。请参见ZK团队

如果图像是在ZUL文件中定义的,只需在方法上使用
@Listen(“onClick=#yourmageid”)
注释即可

如果图像是动态生成的,请使用将
onClick
事件添加到图像中:

public class RuleController  extends SelectorComposer<Component> {

    ...

    Image imageTemp = (Image)image.clone();

    EventListener<Event> actionListener = new SerializableEventListener<Event>() {
        private static final long serialVersionUID = 1L;

        public void onEvent(Event event) throws Exception {
            delCondition1(indexCon1);
        }
    };

    imageTemp.addEventListener(Events.ON_CLICK, actionListener);

    ...

    public void delCondition1(int index){
        ...
    }
}
公共类规则控制器扩展选择器或编译器{
...
Image imageTemp=(Image)Image.clone();
EventListener actionListener=新的SerializableEventListener(){
私有静态最终长serialVersionUID=1L;
public void onEvent(事件)引发异常{
delCondition1(indexCon1);
}
};
imageTemp.addEventListener(Events.ON_单击,actionListener);
...
公共void delCondition1(整数索引){
...
}
}

请参阅。

如果我在zul页面中编写代码,则代码可以运行。您不需要
zscript
。这适用于原型制作,但不建议用于生产。只需在方法上使用
@Listen(“onClick=#yourmageid”)
注释。还有,你为什么不使用MVVM呢?我的ImageId是动态生成的,所以我不能使用@Listen(“onClick=#yourImageId”),你还有其他方法吗?啊,好的,那么使用一个,我已经发布了一个例子作为答案。是的,它在addEventListener中工作,我不知道addEventHandler为什么不工作。
public class RuleController  extends SelectorComposer<Component> {

    ...

    Image imageTemp = (Image)image.clone();

    EventListener<Event> actionListener = new SerializableEventListener<Event>() {
        private static final long serialVersionUID = 1L;

        public void onEvent(Event event) throws Exception {
            delCondition1(indexCon1);
        }
    };

    imageTemp.addEventListener(Events.ON_CLICK, actionListener);

    ...

    public void delCondition1(int index){
        ...
    }
}