jenkins插件,onclick in jelly不起作用

时间:2015-07-08 11:43:12

标签: jenkins-plugins jelly

我正在尝试在开发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()的人?

如果有遗漏的信息,请告诉我,我会尽快回来!

1 个答案:

答案 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文件中的预定义变量不是必需的,我只传递它来映射具有相应作业名称的复选框。

希望这对于那些在这些主题上与文档(以及不存在的完整示例)斗争的人有用。