Java 如何获取Teamcity电子邮件通知freemarker中提供的数据模型

Java 如何获取Teamcity电子邮件通知freemarker中提供的数据模型,java,teamcity,freemarker,Java,Teamcity,Freemarker,我正在做一些关于Teamcity通知电子邮件定制的事情,我正在关注。因此,Teamcity提供的数据模型是 <#-- @ftlvariable name="project" type="jetbrains.buildServer.serverSide.SProject" --> <#-- @ftlvariable name="buildType" type="jetbrains.buildServer.serverSide.SBuildType" --> <#--

我正在做一些关于Teamcity通知电子邮件定制的事情,我正在关注。因此,Teamcity提供的数据模型是

<#-- @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" -->
我可以得到如下数据模型的属性

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

欢迎
欢迎${user}!
我们的最新产品:
!

但是,为什么Teamcity通知模板中的
build.name
可以工作?我既没有看到
getName
方法,也没有看到
name
变量在
SBuiltType
BuildTypeIdentity
继承
getName()
,这就是
build.name
工作的原因。

SBuiltType
BuildTypeIdentity
继承
getName()
,这就是
build.name
有效的原因。

感谢您的回复。我明白你的意思了。但是,我可以在SBuiltType中看到getExtendedName(),为什么build.extendedName在模板中不返回任何内容。我的第一个想法是
getExtendedName()
返回
null
,但它不应该根据javadoc返回。是
build.getExtendedName吗???
true
(也就是说,我们有那个方法吗)?嗯,不知道为什么,但这次成功地获得了build.extendedName的值。谢谢你的帮助。谢谢你的回复。我明白你的意思了。但是,我可以在SBuiltType中看到getExtendedName(),为什么build.extendedName在模板中不返回任何内容。我的第一个想法是
getExtendedName()
返回
null
,但它不应该根据javadoc返回。是
build.getExtendedName吗???
true
(也就是说,我们有那个方法吗)?嗯,不知道为什么,但这次成功地获得了build.extendedName的值。谢谢你的帮助。
<html>
<head>
  <title>Welcome!</title>
</head>
<body>
  <h1>Welcome ${user}!</h1>
  <p>Our latest product:
  <a href="${latestProduct.url}">${latestProduct.name}</a>!
</body>
</html>