拦截对梅勒行动的调用

时间:2012-01-22 10:16:09

标签: java email playframework

有没有办法拦截对Play Mailer class的调用?

我想记录我的应用程序发送的所有电子邮件。我想访问邮件程序方法参数和方法名称,并记录所有这些。

我尝试过使用@With,但我的@Before方法没有被调用:

@With(EmailInterceptor.class)
public class Mails extends Mailer {

    public static void welcome(User user) {
        setSubject("Welcome to my app");
        setFrom("Me <me@domain.com>");
        addRecipient(user.email);

        Mailer.send(user);
    }
}

public final class EmailInterceptor extends UserAwareControllerBase {
    private final static Logger logger = LoggerHelper.getLogger();

    @Before
    public void logEmail(){
        String email = getUser() == null ? "<null>" : getUser().email;
        logger.info("Sending email to " + email);
    }
}

1 个答案:

答案 0 :(得分:2)

AFAIK没有梅勒的拦截。检查https://github.com/playframework/play/blob/master/framework/src/play/mvc/ActionInvoker.java。转到第142行,清楚地表明只有控制器会获得拦截。