jelly页面修改后会,不需要重新编译,再次访问即可更新。

jelly文件会关联一个类,定义这样的一个方法:

public String getMyString() {
    return "Hello Jenkins!";
}

使用jelly关键字it,it是jelly关联的那个类的引用,可以通过it.去调用方法:

<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">
    ${it.myString}
</j:jelly>

这种方法我试了没有成功,不知道是不是姿势不对

field例子:

<f:entry title="${%Port}" field="port">
    <f:textbox />
</f:entry>

${%...}表示国际化字符,field的值是类中的属性或方法,filed的值会填入textbox,f:entry是一行区域的内容

对某个field的帮助信息可在jelly文件同路径创建help-FIELD.html文件,对上面的例子就应该是help-port.html

校验表单,使用注解@QueryParameter后才会和前端表单输入关联

public FormValidation doCheckPort(@QueryParameter String value) {
    if(looksOk(value))  return FormValidation.ok();
    else                return FormValidation.error("There's a problem here");
}

如果类没有实现Descriptors接口,则需要重写configure(StaplerRequest req, JSONObject formData)方法, 点击保存按钮会触发该方法,configure方法中使用optInt方法来获取用户的配置值,如formData.optInt("port", 3141), 在configure方法中再调用save()方法保存设置的值,在构造函数中调用load()方法。