java - Jelly validateButton 无法访问 Java 方法

标签 java jenkins continuous-integration jenkins-plugins jelly

我正在尝试编写一个简单的 Jenkins 插件。 然而,我面临 Jelly validateButton 的问题;它无法访问 Java 方法。

由于我对 Jelly 和 Java 不太熟悉,所以我一直使用这个 Wiki 作为引用点 - https://wiki.jenkins-ci.org/display/JENKINS/Jelly+form+controls

这是我在 Jenkins 中得到的:

ERROR
HTTP ERROR 404

Problem accessing /tagBuild. Reason:

    Not Found

Powered by Jetty://

这是我的果冻代码:

<j:jelly xmlns:j="jelly:core" xmlns:l="/lib/layout" xmlns:st="jelly:stapler" xmlns:f="lib/form" xmlns:t="/lib/hudson">
    <l:layout norefresh="true">
        <st:include page="sidepanel.jelly" it="${it.build}"/>
        <l:main-panel>
            <f:form method="post">
                <f:entry title="${%Milestone Name}" help="Enter Milestone name to tag with...">
                    <f:textbox field="milestoneName" />
                </f:entry>
                <f:validateButton title="${%Tag Build}" progress="${%Tagging...}" method="tagBuild" with="milestoneName" />
            </f:form>
        </l:main-panel>
    </l:layout>
</j:jelly>

这是 Java 类:

import hudson.model.AbstractBuild;
import hudson.model.Action;
import hudson.util.FormValidation;
import org.kohsuke.stapler.QueryParameter;

public class MilestoneLabelingPlugin implements Action {
    AbstractBuild build;
    public AbstractBuild getBuild() { return this.build; }
    public MilestoneLabelingPlugin(AbstractBuild build) {
        super();
        this.build = build;
    }
    public String getUrlName() { return "MilestoneLabelingPlugin"; }
    public String getDisplayName() { return "Label Milestone Build"; }
    public String getIconFileName() { return "/plugin/milestone-labeling-plugin/icon/labelMilestoneBuild.png"; }

    public FormValidation doTagBuild(@QueryParameter("milestoneName") final String milestoneName) {
        return FormValidation.ok("Success!!" + milestoneName);
    }

}

最有趣的部分是我尝试使用“提交”按钮,配置为运行一个方法并且它有效。唯一的问题是我无法从输入字段读取值:/

有人遇到过类似的问题吗?或者有人可以告诉我我做错了什么。

感谢您提前回复。

最佳答案

我认为这个问题正如 Wiki 中所解释的那样:“此方法需要位于拥有此表单片段的描述符类上。”看起来 FormValidation 方法仅支持 Desribable 类。

关于java - Jelly validateButton 无法访问 Java 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30460863/

相关文章:

jenkins - 在调用并行阶段之前运行脚本(存储)

iphone - 运行 iPhone/iPad 模拟器以实现持续集成

java - GWT - 如何在 @Entity 注释的类之外实现 RequestContext 方法?

java - 设计一个抽象类,以便任何人都可以扩展它并以多态方式使用扩展类

java - 如何将标签绑定(bind)到支持类中的文本?

jenkins - 如何通过 HipChat 中的命令触发 jenkins 构建

java - 2d 游戏中碰撞检测背后的逻辑是什么?

jenkins - 我可以在Jenkins CI上加快Gradle守护进程的启动速度吗?

jenkins - 如果下游作业失败,如何向上游提交者发送电子邮件?

logging - 向 Google Cloud Build 日志输出添加时间戳