1

我有一个hudson.model.ManagementLink(创建一个可以通过Manage Jenkins访问的页面。

我有一些表单字段,我想使用f:validateButton. 如果要在config.jellya Publisher(具有描述符)的页面上完成此操作,则一个简单的doXXX()方法将在描述符中起作用。

doXXX()如果我直接向它添加一个类似的方法hudson.model.ManagementLink,实际上可以通过 URL myPage/myMethod直接访问,但是它只f:validateButton返回 404,显然我需要发送表单值。

我遇到的一个潜在解决方案是withCustomDescriptorByName并且在我在其他地方拥有的描述符中有逻辑,但我无法让它工作

4

1 回答 1

2

要回答上面的实际问题(即没有描述符),您可以将验证所需的任何字段提供给(逗号分隔)的属性,然后将with属性设置为类似于以下内容...f:validateButtonmethod

method="${it.fullURL}triggerOfficial"

...然后在 java ( it) 中有一个方法...

public String getFullURL(){
    return Stapler.getCurrentRequest().getOriginalRequestURI().substring(1);
}

...然后还有执行验证本身的方法...

public FormValidation doTriggerOfficial() { 
    return FormValidation.ok("hello");
}

但是,如果您想对通常没有描述符的类类型执行正常的字段验证(没有 validateButton)......

1)添加implements Describable<YourClassName>到您的班级签名

2)添加这样的东西......

@SuppressWarnings("unchecked")
@Override
public Descriptor<ConfigLink> getDescriptor() {
    Jenkins jenkins = Jenkins.getInstance();
    if (jenkins == null) {
        throw new IllegalStateException("Jenkins has not been started");
    }
    return jenkins.getDescriptorOrDie(getClass());
}

3)加上一个内部类(使用普通doCheckXXX方法)

@Extension
public static final class DescriptorImpl extends Descriptor<YourClassName> {...}

4)然后最后将它在果冻添加属性中链接到包含您想要自动验证的表单元素descriptor="${it.descriptor}"的标签(这将调用步骤2中的详细信息)f:formgetDescriptor

于 2016-02-25T12:58:58.750 回答