@In(create=true) private A a; public void test() { System.out.println(a.property); } } 然后通过某个页面事件调用 Test test = new Test(); test.test(); 报错,前台报未知错误,后台没有输出。 同理,通过new的方式,所有Seam的注解几乎都不能用。通过In的方式,就一切正常。 只有当一个对象的整个...
@In 在每次组件调用开始时,从上下文变量注入此组件属性。如果上下文变量时null,那么一个异常将被抛出。 @In(create=true) 在每次组件调用开始时,从上下文注入次组件属性。如果上下文变量为null,那么Seam实例化这个组件。 @In FacesMessages facesMessages; facesMessages 组件是一个向用户显示成功或者失败消息的非常方便...
如果你希望明确指定上下文变量名,可以这样写:@In("currentUser")。 如果没有组件实例绑定到具名的上下文变量,你可能希望Seam创建一个,你可以指定 @In(create=true)。 如果值是可选的(可以为null),请指定 @In(required=false)。 对于某些组件,到处指定 @In(create=true) 是很繁琐的。 你可以注解整个组件为 @A...
对基层对象,比如persistence contexts,通常可以用auto-create选项。使用persistence contexts的一个好处是,当你使用@In标注时,不必显式声明create=true。 <components xmlns="http://jboss.com/products/seam/components" xmlns:persistence="http://jboss.com/products/seam/persistence" <persistence:managed-persistence-c...
2:Component.getInstance("XXX",true); 3:@In(value="XXX",create=true) 第二种和第三种方式我运行就报空指针,类没有被实例化。而以第一种方式实例化后,A类所牵涉的seam组件类中的数据库操作有时候会报错,有时候又不会。我估计是seam的事务被打乱的原因,报了很多奇怪的错,比如我query.getResultList()的时...
@In BigDecimal amount; public String getHowLargeIsOrder() { return (amount.compareTo(CUTOFF) >= 0) ? "large order" : "small order"; } } 代码示例来源:origin: org.nuxeo.ecm.platform/nuxeo-platform-webapp-core public class IsolatedWorkspaceCreatorBean { @In(create = true) protected transient...
@In (create=true) private EntityManager em; ... ... } 使用POJO取代EJB3 bean有正反两方面意见,使用POJO编程时很简单,因为它们不需要EJB3特有的注解和接口(参见上文)。如果你的所有业务组件都是Seam POJO, 那么你就能不依赖EJB3应用服务器,运行你的Seam 应用(参见23章,没有EJB3的Seam)。
@In (create=true) private EntityManager em; ... ... } 使用POJO取代EJB3 bean有正反两方面意见,使用POJO编程时很简单,因为它们不需要EJB3特有的注解和接口(参见上文)。如果你的所有业务组件都是Seam POJO, 那么你就能不依赖EJB3应用服务器,运行你的Seam 应用(参见23章,没有EJB3的Seam)。
@In(create=true) private transient FacesMessages facesMessages; public String logregister() { List existing = em.createQuery("select logName from OMXLog where logName=:logName") .setParameter("logName", omxlog.getLogName()) .getResultList(); ...
seam