在 cfc 中扩展邮件对象
Extending mail object in a cfc
我在 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() 方法的正确方法是什么?
com.adobe.coldfusion.mail
中的getters/setters其实不是函数,而是访问器。访问器由 ColdFusion 基于组件中的属性自动生成。 属性是继承的,访问器不是!
邮件组件中的访问器只做 set/get 属性 的值。因此 super.setTo(arguments.recipients);
等价于 variables.to = arguments.recipients;
。 this.getTo()
等价于 variables.to
等等
注意:将 accessors="true"
与 extends="com.adobe.coldfusion.mail"
的组件一起使用也不适用于继承的属性。
我在 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() 方法的正确方法是什么?
com.adobe.coldfusion.mail
中的getters/setters其实不是函数,而是访问器。访问器由 ColdFusion 基于组件中的属性自动生成。 属性是继承的,访问器不是!
邮件组件中的访问器只做 set/get 属性 的值。因此 super.setTo(arguments.recipients);
等价于 variables.to = arguments.recipients;
。 this.getTo()
等价于 variables.to
等等
注意:将 accessors="true"
与 extends="com.adobe.coldfusion.mail"
的组件一起使用也不适用于继承的属性。