在cfc中扩展邮件对象

时间:2015-12-15 17:41:33

标签: coldfusion coldfusion-11 cfmail

我在cfscript中使用mail()对象。我想扩展该对象,以便我可以覆盖setTo()方法。这是我写的cfc代码。

component extends="com.adobe.coldfusion.mail"
{
  public void function setTo(String recipients) {
    machineName = createObject("java", "java.net.InetAddress").localhost.getCanonicalHostName();

    if (FindNoCase("devcomputer", machinename) == 0) 
    {
      super.setTo(arguments.recipients);
    }
    else
    {
      super.setTo(this.getFrom());
    }       
  } 
}

然而,当这个运行时,我收到一条消息,说在调用super.setTo()的行中不存在setTo()方法。进一步挖掘我查看了超级对象,它继承自java.lang.Class,而不是com.adobe.coldfusion.email。

扩展ColdFusion邮件对象的正确方法是什么,以便我可以覆盖setTo()方法?

1 个答案:

答案 0 :(得分:3)

com.adobe.coldfusion.mail中的getter / setter实际上不是函数,而是访问器。 ColdFusion根据组件中的属性自动生成访问器。 属性是继承的,访问者不是!

邮件组件中的访问者除了设置/获取属性的值之外什么都不做。因此,super.setTo(arguments.recipients);的等效值为variables.to = arguments.recipients;。相当于this.getTo()variables.to等。

注意:将accessors="true"extends="com.adobe.coldfusion.mail"无法用于继承属性的组件一起使用。