Java 如何从ZK页面调用后端方法?
我想用onClick方法从页面动态生成图像。但不管我怎么努力,都失败了 我在后端类中的代码如下所示: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+")")
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){
...
}
}