Java/Jenkins/プラグイン開発のTIPS集/config.jellyでネストされた設定画面を作る
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。
#contents
今回は、下記のような感じのネストされた設定画面を作るとき...
#ref(01.png)
チェックボックスをクリックすると、、
#ref(02.png)
ネストされた設定が現れる、こんな感じです。
**画面側 [#tbc8ba99]
config.jellyは以下のように記述します。
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" x...
xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/l...
<f:block>
<table>
<f:optionalBlock name="useMail" title="チェック結果を...
checked="${instance.addresses!=null}" >
<f:entry title="メール送信先" field="addresses"
description="チェック結果をメール送信する宛先をカ...
<f:textarea />
</f:entry>
</f:optionalBlock>
</table>
</f:block>
</j:jelly>
基本的にはこれだけで画面が構成されるはずです。
**Java(Builder)側 [#l0e22710]
次に画面から入れられた値を保持したり使用したりするJava側...
public class Test2Builder extends Builder {
// ネストしたテキストボックスを作成するときの定石。
private final EnableUseMailTextBlock useMail;
public static class EnableUseMailTextBlock {
private String addresses;
@DataBoundConstructor
public EnableUseMailTextBlock(String addresses) {
this.addresses = addresses;
}
}
private String addresses;
public String getAddresses() {
return addresses;
}
@DataBoundConstructor
public Test2Builder(EnableUseMailTextBlock useMail) {
this.useMail = useMail;
if (useMail != null) {
this.addresses = useMail.addresses;
}
}
@Override
public boolean perform(AbstractBuild build, Launcher...
BuildListener listener) throws InterruptedEx...
if (useMail == null) {
// チェックボックスがOffの時の処理
} else {
// チェックボックスがOnなので、なかの値(addr...
}
return true;
}
@Override
public DescriptorImpl getDescriptor() {
return (DescriptorImpl) super.getDescriptor();
}
// Descriptorは省略
}
Jenkinsは画面のパラメタとJavaの世界を @DataBoundConstruct...
@DataBoundConstructor
public Test2Builder(EnableUseMailTextBlock useMail) {
this.useMail = useMail;
if (useMail != null) {
this.addresses = useMail.addresses;
}
}
public static class EnableUseMailTextBlock {
private String addresses;
@DataBoundConstructor
public EnableUseMailTextBlock(String addresses) {
this.addresses = addresses;
}
}
このようにネストされた Javaクラス EnableUseMailTextBlock ...
----
この記事は
#vote(おもしろかった,そうでもない)
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}
終了行:
// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。
#contents
今回は、下記のような感じのネストされた設定画面を作るとき...
#ref(01.png)
チェックボックスをクリックすると、、
#ref(02.png)
ネストされた設定が現れる、こんな感じです。
**画面側 [#tbc8ba99]
config.jellyは以下のように記述します。
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" x...
xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/l...
<f:block>
<table>
<f:optionalBlock name="useMail" title="チェック結果を...
checked="${instance.addresses!=null}" >
<f:entry title="メール送信先" field="addresses"
description="チェック結果をメール送信する宛先をカ...
<f:textarea />
</f:entry>
</f:optionalBlock>
</table>
</f:block>
</j:jelly>
基本的にはこれだけで画面が構成されるはずです。
**Java(Builder)側 [#l0e22710]
次に画面から入れられた値を保持したり使用したりするJava側...
public class Test2Builder extends Builder {
// ネストしたテキストボックスを作成するときの定石。
private final EnableUseMailTextBlock useMail;
public static class EnableUseMailTextBlock {
private String addresses;
@DataBoundConstructor
public EnableUseMailTextBlock(String addresses) {
this.addresses = addresses;
}
}
private String addresses;
public String getAddresses() {
return addresses;
}
@DataBoundConstructor
public Test2Builder(EnableUseMailTextBlock useMail) {
this.useMail = useMail;
if (useMail != null) {
this.addresses = useMail.addresses;
}
}
@Override
public boolean perform(AbstractBuild build, Launcher...
BuildListener listener) throws InterruptedEx...
if (useMail == null) {
// チェックボックスがOffの時の処理
} else {
// チェックボックスがOnなので、なかの値(addr...
}
return true;
}
@Override
public DescriptorImpl getDescriptor() {
return (DescriptorImpl) super.getDescriptor();
}
// Descriptorは省略
}
Jenkinsは画面のパラメタとJavaの世界を @DataBoundConstruct...
@DataBoundConstructor
public Test2Builder(EnableUseMailTextBlock useMail) {
this.useMail = useMail;
if (useMail != null) {
this.addresses = useMail.addresses;
}
}
public static class EnableUseMailTextBlock {
private String addresses;
@DataBoundConstructor
public EnableUseMailTextBlock(String addresses) {
this.addresses = addresses;
}
}
このようにネストされた Javaクラス EnableUseMailTextBlock ...
----
この記事は
#vote(おもしろかった,そうでもない)
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}
ページ名: