我目前正在使用JSF 2和AOP与AspectJ注释的组合来解决问题。 我不知道Spring AOP是否在这里发挥作用...(我不太清楚SPRING AOP,ASPECTJ,GOOGLE GUICE之间的区别......这是另一个问题)
我正在尝试通过点击jsf视图中的表单在我的数据库中添加一些值后发送电子邮件。 我有一个由JSF处理的managedBean AddPartipant(链接到视图),通过表单添加参与者。我想拦截在数据库中进行更改的方法,并在此操作之后发送电子邮件。 我有一个spring bean SendMailBoImpl,带有一个发送电子邮件的方法。(发送工作正常)
我发现使用AOP是一个好方法。它只有当我试图让它在主要工作中才有效...而不是在完整的webapp中。我读了一些关于问题上下文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));
}
MaiBo服务:
@After("execution(* com.clb.genomic.lyon.beans.AddParticipant.addParticipant(..))")
public void sendMail() {
....
mailSender.send(message);
....
}
我的bean配置:
<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();
答案 0 :(得分:0)