3

我在 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() 方法的正确方法是什么?

4

1 回答 1

3

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

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

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

于 2015-12-15T20:28:04.847 回答