Events 如何访问seam@Observer方法中以前设置的字段?

Events 如何访问seam@Observer方法中以前设置的字段?,events,seam,Events,Seam,我当前的设置是JBoss 4.2.3.GA上的JBoss Seam 2.2 我有两种豆子: @Name("mailingManager") @Scope(ScopeType.PAGE) public class MailingMgr { private Mailing selectedMailing; @Observer("mailing.letter.success") public void recordSuccess(final Object arg) { if (n

我当前的设置是JBoss 4.2.3.GA上的JBoss Seam 2.2

我有两种豆子:

@Name("mailingManager")
@Scope(ScopeType.PAGE)
public class MailingMgr {
  private Mailing selectedMailing;

  @Observer("mailing.letter.success")
  public void recordSuccess(final Object arg) {
    if (null != selectedMailing) { // store arg }
  }

  public void send() {
    selectedMailing = new Mailing();
    if ('EMAIL' == determineType()) {
      EmailSender mailer = (EmailSender) Component.getInstance(EmailSender.class);
      mailer.send(getAddresses());
    }
    // ... more options
  }
}

@Name("emailSender")
@Scope(ScopeType.PAGE)
public class EmailSender {
  public void send(final Set<String> addresses) {
    for (String addr : addresses) {
      // ... create a mail
      Events.instance().raiseEvent("mailing.letter.success", getGeneratedMail());
    }
  }
}
@Name(“mailingManager”)
@作用域(ScopeType.PAGE)
公共类邮件管理器{
私人邮寄选择邮寄;
@观察员(“邮寄、信函、成功”)
public void recordSuccess(最终对象arg){
如果(null!=selectedMailing){//store arg}
}
公共无效发送(){
selectedMailing=新建邮件();
如果('EMAIL'==determineType()){
EmailSender mailer=(EmailSender)组件.getInstance(EmailSender.class);
send(getAddresses());
}
//…更多选择
}
}
@姓名(“电子邮件发件人”)
@作用域(ScopeType.PAGE)
公共类电子邮件发送者{
公共无效发送(最终设置地址){
for(字符串地址:地址){
//…创建邮件
Events.instance().raiseEvent(“mailing.letter.success”,getGeneratedMail());
}
}
}
问题是,当调用
recordSuccess()
时,selectedMailing总是
null


作为一种解决方法,我在调用任何可能触发我的事件的代码之前,在对话上下文中手动设置
selectedMailing
,然后在调用
recordSuccess
之前,用
@in(required=false)
注释我的字段以再次注入它。但有没有更优雅的解决方案(保持解耦完好无损)?为什么不重用调用bean来处理事件呢?

奇怪的是,如果我将MailingMgr的作用域升级为对话,即使没有额外的手动输出,整个过程也能正常工作。但是为什么呢?