我在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()方法?
答案 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"
无法用于继承属性的组件一起使用。