1

私は( Manage Jenkinshudson.model.ManagementLink経由でアクセスできるページを作成します。

を使用して検証したいフォーム フィールドがいくつかありf:validateButtonます。config.jellyこれが(記述子を持つ)aのページで行われる場合Publisher、簡単なdoXXX()方法が記述子で機能します。

同様のdoXXX()メソッドを直接追加すると、実際には URL myPage/myMethodhudson.model.ManagementLinkから直接アクセスできますが、404 が返されるだけで、明らかにフォームの値を送信する必要があります。f:validateButton

私が遭遇した1つの潜在的な解決策はwithCustomDescriptorByNameであり、他の場所にある記述子にロジックを持っていますが、それを機能させることはできません

4

1 に答える 1

2

上記の実際の質問 (つまり、記述子なし) に答えるには、検証に必要なフィールドwithf:validateButton(コンマ区切り) の属性に指定し、method属性を次のようなものに設定します...

method="${it.fullURL}triggerOfficial"

...そして、Java(it)にはメソッドがあります...

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

...そして、検証自体を実行する方法も...

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

ただし、通常は記述子を持たないクラス型で通常のフィールド検証 (validateButton なし) を実行する場合は...

implements Describable<YourClassName>1)クラス署名に追加

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) 最後に、自動検証したいフォーム要素を含むタグに、jelly add 属性でリンクします (これにより、ステップ 2 のdescriptor="${it.descriptor}"詳細が呼び出されます)。f:formgetDescriptor

于 2016-02-25T12:58:58.750 に答える