我正在尝试在开发jenkins插件时使用@onclick,但是当点击具有此属性的复选框时,没有任何反应(与@onchange相同)。
我有一个复选框,用于实现ListViewColumn的每个作业以及相应的column.jelly文件
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/lib/form">
<td>
<f:checkbox name="selected" onclick="${it.itClicked()}" onchange="${it.itClicked()}" />
</td>
</j:jelly>
和itClicked()方法驻留在这个果冻文件的相应java类中:
class CheckboxTemplate extends ListViewColumn {
...
public void itClicked() {
System.out.println("it clicked!");
}
...
@Extension
public static class DescriptorImpl extends ListViewColumnDescriptor {
...
}
但这显然不起作用......
我之前创建了另一个插件,之前从冻结文件中预定义对象“it”调用java类中的方法,并且工作正常,因此在工作场所定义的方法不是问题(我假设)。
当选中/更改复选框时,任何知道为什么不执行itClicked()的人?
如果有遗漏的信息,请告诉我,我会尽快回来!
答案 0 :(得分:1)
我设法通过添加
来解决这个问题<st:bind var="myItem" value="${it}"/>
在我的果冻文件中并将@clicked更改为
onclick="myItem.mark('${job.fullName}')"
其中mark()
在后端使用特定注释定义
@JavaScriptMethod
public void mark(String job) {
// do what you need to do
}
job
当然,如果column.jelly文件中的预定义变量不是必需的,我只传递它来映射具有相应作业名称的复选框。
希望这对于那些在这些主题上与文档(以及不存在的完整示例)斗争的人有用。