[SEAM] 请教一个JavaBean组件作为Action的问题。

JohnsonXiao 2008-04-09
最近学习大牛们翻译的seam手册,受益匪浅。但是最近在学习过程中遇到个问题没想明白,请教一下大家。

翻译文档,3.2.4. JavaBeans小节:
“默认,JavaBeans是绑定到Event Context的。”

在第8章详细谈论了JavaBean组件中使用seam管理持久化上下文与事务的关系。

接着我看了一下Seam发布包中的示例:
hibernate2文件夹下,HotelBookingAction类,没有显示指定上下文类型,就是说使用了默认的EVENT Context,但是它的代码里面又使用的@Begin,@End标签表示它是个会话上下文组件,这是为什么?

郁闷一天了,没想明白,那位大牛指点一下。。。
atusoft 2008-04-13
有状态的session bean默认的是conversation吧。如果是javabean的话,就是event了。HotelBookingAction估计是个session bean.
SSailYang 2008-04-13
HotelBookingAction 被 javax.ejb.Stateful 标记了,它是SFSB,不是JavaBean
yourenyouyu2008 2008-04-14
@Begin,@End和所在的类的范围没有关系,对话上下文范围的类里没有一个有@Begin的。@Begin将类里@out的属性加入对话上下文,这样在对话的下一步就可以取到上一步的值了。
JohnsonXiao 2008-04-16
//$Id: HotelBookingAction.java,v 1.7 2007/06/25 16:18:46 gavin Exp $
package org.jboss.seam.example.hibernate;

import java.util.Calendar;
......

@Name("hotelBooking")
public class HotelBookingAction
{
  
   @In
   private Session bookingDatabase;



我说的是JEE环境,没有被 javax.ejb.Stateful 标记。
JohnsonXiao 2008-04-16
但是这个类确实是个会话JavaBean,我测试了一下,无论我给这个JavaBean增加什么注解(会话、Event、Page),都对其没有影响。
Global site tag (gtag.js) - Google Analytics