我试图开始使用Jenkins插件开发,并且对插件的全局配置的持久性有一些小问题。
<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="useForeignLanguage">
<f:entry title="Language to use" field="useLanguage"
description="Check if we should say hello in another language">
<f:radio name="useLanguage" title="French" value="fr" />
<f:radio name="useLanguage" title="Japanese" value="jp" />
</f:entry>
</f:optionalBlock>
</f:section>
</j:jelly>
public class HelloWorldBuilder extends Builder {
//...
@Extension
public static final class Descriptor extends BuildStepDescriptor<Builder> {
private boolean useForeignLanguage;
private String useLanguage;
public Descriptor() {
load();
}
@Override
public boolean configure( final StaplerRequest req, final JSONObject formData ) throws FormException {
// To persist global configuration information,
// set that to properties and call save().
final JSONObject languageJSON = formData.getJSONObject( "useForeignLanguage" );
if ( ( languageJSON != null ) && !( languageJSON.isNullObject() ) ) {
this.useLanguage = languageJSON.getString( "useLanguage" );
this.useForeignLanguage = true;
} else {
this.useLanguage = null;
this.useForeignLanguage = false;
}
save();
return super.configure( req, formData );
}
public String getUseLanguage() {
return this.useLanguage;
}
public boolean getUseForeignLanguage() {
return this.useForeignLanguage;
}
//...
}
}
配置本身在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>
感谢您提前提供任何帮助
答案 0 :(得分:1)
更新果冻修复了问题:
<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>