0

我目前在使用 JSF 2 和 AOP 与 AspectJ 注释的组合时遇到问题。我不知道 Spring AOP 是否在这里发挥作用......(我不太了解 SPRING AOP、ASPECTJ、GOOGLE GUICE 之间的区别......这是另一个问题)

在我通过单击 jsf 视图中的表单在我的数据库中添加了一些值之后,我正在尝试发送一封电子邮件。我有一个由 JSF 处理的 managedBean AddPartipant(链接到视图)以通过表单添加参与者。我想拦截在数据库中进行更改的方法并在此操作之后发送电子邮件。我有一个带有发送电子邮件方法的 Spring bean SendMailBoImpl。(发送工作正常)

我发现使用 AOP 是一个好方法。它仅在我尝试使其在主程序中运行时才有效……而不是在完整的 web 应用程序中。我读了一些关于问题上下文 spring / Jsf 的东西,但没有找到解决方案......但是......

我知道我通过视图在数据库中添加数据的方法是可以的......但是在修改数据库时永远不会发送邮件。

有人有想法吗?

非常感谢 :)

AddParticipant ManagedBean :

     public class AddParticipant  implements Serializable{

    //DI via Spring
    ParticipantBo participantBo;

    private String  id_study ;

    private Participant  aParticipant = new Participant();

            //getters and setters

    public void addParticipant(){

        aParticipant.setId_study (id_study);
        ...
        participantBo.save(aParticipant);

        FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Ajout du participant "+id_study+" dans l'étude "+ study_name));

    }

麦博服务:

      @After("execution(* com.clb.genomic.lyon.beans.AddParticipant.addParticipant(..))")
     public void sendMail() {
           ....

        mailSender.send(message);

           ....
     }  

我的豆配置:

 <aop:aspectj-autoproxy proxy-target-class="true" />
 <bean id="addParticipant" class="com.clb.genomic.lyon.beans.AddParticipant"/>

<bean id="sendMailBo" class="com.clb.genomic.lyon.bo.SendMailBoImpl">
    <property name="mailSender" ref="mailSender" />
    <property name="simpleMailMessage" ref="customeMailMessage" />
</bean>

当我这样做时,它正在工作:

     ApplicationContext appContext =  new ClassPathXmlApplicationContext 
     ( "classpath:webConfiguration/applicationContext.xml");

     AddParticipant aspect = (AddParticipant) appContext.getBean("addParticipant");

     aspect.addParticipant();
4

1 回答 1

0

根据以下内容解决:http: //kumarnvm.blogspot.fr/2012/07/using-spring-to-manage-jsf-september-10_14.html

于 2013-09-25T11:33:13.943 回答