我在开发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() 驻留在该 jelly 文件相应的 java 类中:
class CheckboxTemplate extends ListViewColumn {
...
public void itClicked() {
System.out.println("it clicked!");
}
...
@Extension
public static class DescriptorImpl extends ListViewColumnDescriptor {
...
}
但这显然不起作用......
我之前制作了另一个插件,它从 jelly 文件中的预定义对象“it”调用 java 类中的方法,并且工作正常,因此在工作位置定义该方法不是问题(我假设)。
有人知道为什么在选中/更改复选框时不执行 itClicked() 吗?
如果我漏掉了任何信息,请告诉我,我会尽快回来!
最佳答案
我设法通过添加解决了这个问题
<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 文件中的预定义变量不需要它工作,我只是传递它来映射具有相应作业名称的复选框。
希望这对于那些在这些主题的文档(以及不存在的完整示例)中遇到困难的其他人有用。
关于jenkins-plugins - jelly 中的 onclick 不起作用,jenkins 插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31291633/