2017-08-01 54 views
0

我正在做一些關於Teamcity通知電子郵件的定製,我正在關注Customizing Notifications。 Accoring它,數據模型的TeamCity提供是如何獲取TeamCity電子郵件通知中提供的數據模型freemarker

<#-- @ftlvariable name="project" type="jetbrains.buildServer.serverSide.SProject" --> 
<#-- @ftlvariable name="buildType" type="jetbrains.buildServer.serverSide.SBuildType" --> 
<#-- @ftlvariable name="build" type="jetbrains.buildServer.serverSide.SBuild" --> 
<#-- @ftlvariable name="agentName" type="java.lang.String" --> 
<#-- @ftlvariable name="buildServer" type="jetbrains.buildServer.serverSide.SBuildServer" --> 
<#-- @ftlvariable name="webLinks" type="jetbrains.buildServer.serverSide.WebLinks" --> 

<#-- @ftlvariable name="var.buildFailedTestsErrors" type="java.lang.String" --> 
<#-- @ftlvariable name="var.buildShortStatusDescription" type="java.lang.String" --> 
<#-- @ftlvariable name="var.buildChanges" type="java.lang.String" --> 
<#-- @ftlvariable name="var.buildCompilationErrors" type="java.lang.String" --> 

<#-- @ftlvariable name="link.editNotificationsLink" type="java.lang.String" --> 
<#-- @ftlvariable name="link.buildResultsLink" type="java.lang.String" --> 
<#-- @ftlvariable name="link.buildChangesLink" type="java.lang.String" --> 
<#-- @ftlvariable name="responsibility" type="jetbrains.buildServer.responsibility.ResponsibilityEntry" --> 
<#-- @ftlvariable name="oldResponsibility" type="jetbrains.buildServer.responsibility.ResponsibilityEntry" --> 

而且它說,

的代碼可以在IntelliJ IDEA的使用與 完成

我編輯的模板沒有IntelliJ IDEA,因此我不知道有沒有其他方法可以檢查每個數據模型中的內容?

對於您的信息,我已經研究瞭如何在Getting Started下創建數據模型和模板。如果導出到模板的對象符合JavaBean規範,我可以通過變量名稱獲取屬性。例如,對於類像下面,

/** 
* Product bean; note that it must be a public class! 
*/ 
public class Product { 

    private String url; 
    private String name; 

    // As per the JavaBeans spec., this defines the "url" bean property 
    // It must be public! 
    public String getUrl() { 
     return url; 
    } 

    public void setUrl(String url) { 
     this.url = url; 
    } 

    // As per the JavaBean spec., this defines the "name" bean property 
    // It must be public! 
    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

} 

我能得到類似下面的數據模型的屬性,

<html> 
<head> 
    <title>Welcome!</title> 
</head> 
<body> 
    <h1>Welcome ${user}!</h1> 
    <p>Our latest product: 
    <a href="${latestProduct.url}">${latestProduct.name}</a>! 
</body> 
</html> 

但是,爲什麼在TeamCity的通知模板build.name可以工作?我還沒有看到沒有getName方法或http://javadoc.jetbrains.net/teamcity/openapi/8.1/jetbrains/buildServer/serverSide/SBuildType.html

回答

2

SBuiltTypename變量繼承BuildTypeIdentitygetName(),所以這就是爲什麼build.name作品。

+0

感謝您的回覆。我在這裏得到了什麼。但是,我可以在SBuiltType中看到getExtendedName(),爲什麼build.extendedName在模板中沒有返回任何內容。 – Gearon

+0

我的第一個想法是'getExtendedName()'返回'null',但它不應該根據javadoc。 'build.getExtendedName ??''true'(也就是說,我們是否有這種方法)? – ddekany

+0

嗯,不知道爲什麼,但這次成功獲得了build.extendedName的價值。謝謝你的幫助。 – Gearon

相關問題