2016-03-01 52 views
0

我有Plugin類無Descriptor詹金斯:validateButton的在config.jelly一類沒有描述

@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無法向我的方法發送請求。無論我在validateButtonmethod屬性中寫的是什麼,詹金斯只是在/descriptorByName/jenkins.model.GlobalPluginConfiguration/之後,即使我寫了類似​​的東西。如何連接我的doValidateForm方法和我的validateButton

回答

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的反序列化工作

+0

沒有工作。我有一個不同的'DataBoundConstructor'(它節省了一些其他字段,而不是'test'),但我不認爲這是我的問題的原因。 'validateButton'仍然發送請求到'/ descriptorByName/jenkins.model.GlobalPluginConfiguration/validateForm'。 – coolguy

+0

如果我手動發送請求到'/ descriptorByName/com.my.plugin.Plugin/validateForm',它的工作原理與我預期的 – coolguy

+1

一樣,它可能在config.jelly中看不到它自己的描述符,找出最好的方法是如果你的描述符返回空白,嘗試添加一個'getDescriptor()'到你的config.jelly(它將顯示爲文本) – Tom