Java Jenkins插件:可选块和它';保存和加载配置对话框后,不会保留嵌套的单选按钮
我正试图开始Jenkins插件开发,但在插件全局配置的持久性方面有一个小问题 所讨论的选项是一个带有2个嵌套单选按钮的可选块,正如您在插件的global.jelly中看到的:Java Jenkins插件:可选块和它';保存和加载配置对话框后,不会保留嵌套的单选按钮,java,jenkins,jenkins-plugins,jelly,Java,Jenkins,Jenkins Plugins,Jelly,我正试图开始Jenkins插件开发,但在插件全局配置的持久性方面有一个小问题 所讨论的选项是一个带有2个嵌套单选按钮的可选块,正如您在插件的global.jelly中看到的: 相关Java代码如下所示: 公共类HelloWorldBuilder扩展生成器{ //... @延伸 公共静态最终类描述符扩展了BuildStepDescriptor{ 使用外语; 专用字符串语言; 公共描述符(){ 加载(); } @凌驾 公共布尔配置(最终StaplerRequest请求、最终JSONObject
相关Java代码如下所示:
公共类HelloWorldBuilder扩展生成器{
//...
@延伸
公共静态最终类描述符扩展了BuildStepDescriptor{
使用外语;
专用字符串语言;
公共描述符(){
加载();
}
@凌驾
公共布尔配置(最终StaplerRequest请求、最终JSONObject formData)引发FormException{
//要保留全局配置信息,
//将其设置为properties并调用save()。
最终JSONObject languageJSON=formData.getJSONObject(“useForeignLanguage”);
if((languageJSON!=null)&&&!(languageJSON.isNullObject()){
this.useLanguage=languageJSON.getString(“useLanguage”);
this.useForeignLanguage=true;
}否则{
this.useLanguage=null;
this.useForeignLanguage=false;
}
save();
返回super.configure(req,formData);
}
公共字符串getUseLanguage(){
返回此.useLanguage;
}
公共布尔getUseForeignLanguage(){
返回此文件。使用外语;
}
//...
}
}
配置本身可以很好地保存在xml中,每次保存配置时都会加载xml,因此我想问题在于加载和填充表单模块:
<?xml version='1.0' encoding='UTF-8'?>
<bar.foo.testing.HelloWorldBuilder_-Descriptor plugin="YetAnotherPluginTest@1.0-SNAPSHOT">
<useForeignLanguage>true</useForeignLanguage>
<useLanguage>jp</useLanguage>
</bar.foo.testing.HelloWorldBuilder_-Descriptor>
真的
太平绅士
感谢您提前提供的帮助更新果冻解决了以下问题:
<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">
<f:section title="Hello World Builder">
<f:optionalBlock name="useForeignLanguage" title="Use foreign language" checked="${instance.useForeignLanguage}">
<f:entry title="Language to use" field="useLanguage" description="Check if we should say hello in another language">
<f:entry>
<f:radio name="useLanguage" title="French" value="fr" checked="${instance.useLanguage == 'fr'}" />
</f:entry>
<f:entry>
<f:radio name="useLanguage" title="Japanese" value="jp" checked="${instance.useLanguage == 'jp'}" />
</f:entry>
</f:entry>
</f:optionalBlock>
</f:section>
</j:jelly>
<?xml version='1.0' encoding='UTF-8'?>
<bar.foo.testing.HelloWorldBuilder_-Descriptor plugin="YetAnotherPluginTest@1.0-SNAPSHOT">
<useForeignLanguage>true</useForeignLanguage>
<useLanguage>jp</useLanguage>
</bar.foo.testing.HelloWorldBuilder_-Descriptor>
<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">
<f:section title="Hello World Builder">
<f:optionalBlock name="useForeignLanguage" title="Use foreign language" checked="${instance.useForeignLanguage}">
<f:entry title="Language to use" field="useLanguage" description="Check if we should say hello in another language">
<f:entry>
<f:radio name="useLanguage" title="French" value="fr" checked="${instance.useLanguage == 'fr'}" />
</f:entry>
<f:entry>
<f:radio name="useLanguage" title="Japanese" value="jp" checked="${instance.useLanguage == 'jp'}" />
</f:entry>
</f:entry>
</f:optionalBlock>
</f:section>
</j:jelly>