package org.jboss.seam.example.seambay; import static org.jboss.seam.ScopeType.EVENT; import java.io.Serializable; import javax.persistence.EntityManager; import org.jboss.seam.ScopeType; import org.jboss.seam.annotations.Factory; import org.jboss.seam.annotations.In; import org.jboss.seam.annotations.Name; import org.jboss.seam.annotations.Scope; @Name("memberAction") @Scope(EVENT) public class MemberAction implements Serializable { private static final long serialVersionUID = -8233305696689620298L; private String memberName; private Account selectedMember; @In EntityManager entityManager; @Factory(value="selectedMember", scope=ScopeType.PAGE) public Account getSelectedMember() { if (selectedMember == null && memberName != null) { selectedMember = (Account) entityManager.createQuery( "from Account where name = :name") .setParameter("name", memberName) .getSingleResult(); } return selectedMember; } public String getMemberName() { return memberName; } public void setMemberName(String memberName) { this.memberName = memberName; } }