Jenkins:config.jelly中的validateButton是一个没有Descriptor的类

时间:2016-03-01 13:55:45

标签: java jenkins jenkins-plugins jelly

我的Plugin课程没有Descriptor

@Extension
public class Plugin extends hudson.Plugin {

    // ...

    public FormValidation doValidateForm(String s) {
        return FormValidation.ok("Hello world! Your 's': " + s);
    }
}

我有这个班的config.jelly

<?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core" xmlns:f="/lib/form">
    <!-- ... -->
                    <f:entry title="Test">
                        <f:textbox name="test" value="123" field="test"/>
                    </f:entry>
                    <f:validateButton title="Test" progress="Testing..."
                                      method="validateForm" with="test"/>
    <!-- ... -->
</j:jelly>

问题是当我按下按钮时,我不能让Jenkins向我的方法发送请求。无论我在method的{​​{1}}属性中写什么,Jenkins只是把它放在validateButton之后,即使我写的是/descriptorByName/jenkins.model.GlobalPluginConfiguration/。如何连接我的http://localhost:8080/方法和我的doValidateForm

1 个答案:

答案 0 :(得分:0)

这必须在描述符上才能获得免费功能。

您还需要像这样注释您的参数

FormValidation doCheckServer(@QueryParameter String test) {
    //stuff
}

添加描述符是simple change

class Plugin extends AbstractDescribableImpl<Plugin> {
    String test;

    @DataBoundConstructor
    public Plugin(String test) {
        this.test = test; 
    }

    ....

    @Extension
    public static class DescriptorImpl extends Descriptor<Plugin> {
        public String getDisplayName() { return ""; }

        public FormValidation doValidateForm(@QueryParameter String test) {
            return FormValidation.ok("Hello world! Your 'test': " + test);
          }
    }
}

未经过测试,您需要做更多工作,以便从作业中的XML反序列化