| 
  | import static org.jboss.seam.ScopeType.SESSION;
  | 
  | import java.io.Serializable;
  | ...
  | import org.jboss.seam.annotations.Scope;
  | 
  | @Entity
  | @Name("user")
  | @Scope(SESSION)
  | @Table(name="users",
  |     [EMAIL PROTECTED](columnNames={"username"})})
  | public class User implements Serializable {
  | 
  |     
  |     private static final long serialVersionUID = 9093363133205674398L;
  |     
  |     private Long id;
  |     private String username = null;
  |     private String password = null;
  |     private Boolean seller = null;
  |     private SellerInfo sellerInfo = null;
  |     private ContactInfo contactInfo = null;
  |     private String firstName;
  |     private String lastName;
  |     
  |     public String getFirstName() {
  |             return firstName;
  |     }
  |     public void setFirstName(String firstName) {
  |             this.firstName = firstName;
  |     }
  |     public String getLastName() {
  |             return lastName;
  |     }
  |     public void setLastName(String lastName) {
  |             this.lastName = lastName;
  |     }
  |     
  | 
  |     public ContactInfo getContactInfo() {
  |             return contactInfo;
  |     }
  |     public void setContactInfo(ContactInfo contactInfo) {
  |             this.contactInfo = contactInfo;
  |     }
  |     
  | 
  |     public User() {
  |             super();
  |     }
  |     
  |     
  |     @NotNull @Length(min=5, max=15)
  |     public String getPassword() {
  |             return password;
  |     }
  |     public void setPassword(String password) {
  |             this.password = password;
  |     }
  |     
  |     @NotNull @Length(min=5, max=15)
  |     public String getUsername() {
  |             return username;
  |     }
  |     public void setUsername(String username) {
  |             this.username = username;
  |     }
  |     public SellerInfo getSellerInfo() {
  |             return sellerInfo;
  |     }
  |     public void setSellerInfo(SellerInfo sellerInfo) {
  |             this.sellerInfo = sellerInfo;
  |     }
  |     
  |     @Id @GeneratedValue(strategy=GenerationType.AUTO)
  |     public Long getId() {
  |             return id;
  |     }
  |     public void setId(Long id) {
  |             this.id = id;
  |     }
  |     public Boolean getSeller() {
  |             return seller;
  |     }
  |     public void setSeller(Boolean seller) {
  |             this.seller = seller;
  |     }
  |     
  | 
  | }
  | 

My impression was that @Scope did the binding.

The remaining code is almost identical to initial example code, but for 
completness sake.


  | <%@ taglib uri="http://java.sun.com/jsf/html"; prefix="h" %>
  | <%@ taglib uri="http://java.sun.com/jsf/core"; prefix="f" %>
  | <%@ taglib uri="http://jboss.com/products/seam/taglib"; prefix="s" %>
  | <html>
  |  <head>
  |   <title>Register New User</title>
  |  </head>
  |  <body>
  |   <f:view>
  |    <h:form>
  |      <table border="0">
  |        <s:validateAll>
  |          <tr>
  |            <td>Username</td>
  |            <td><h:inputText value="#{user.username}" required="true"/></td>
  |          </tr>
  |          <tr>
  |            <td>First Name</td>
  |            <td><h:inputText value="#{user.firstName}" required="true"/></td>
  |          </tr>
  |          <tr>
  |            <td>Last Name</td>
  |            <td><h:inputText value="#{user.lastName}" required="true"/></td>
  |          </tr>
  |          <tr>
  |            <td>Password</td>
  |            <td><h:inputSecret value="#{user.password}" 
required="true"/></td>
  |          </tr>
  |        </s:validateAll>
  |      </table>
  |      <h:messages/>
  |      <h:commandButton type="submit" value="Register" 
action="#{register.register}"/>
  |    </h:form>
  |   </f:view>
  |  </body>
  | </html>
  | 

Finally the RegisterAction, all I changed is the em.persist to em.merge


  | import java.util.List;
  | 
  | import javax.ejb.Stateless;
  | ...
  | import org.jboss.seam.log.Log;
  | 
  | import com.genietown.model.User;
  | 
  | @Stateless
  | @Name("register")
  | public class RegisterAction implements Register
  | {
  | 
  |    @In @Valid
  |    private User user;
  |    
  |    @PersistenceContext
  |    private EntityManager em;
  |    
  |    @Logger
  |    private Log log;
  |    
  |    public String register()
  |    {
  |       List existing = em.createQuery("select username from User where 
username=:username")
  |          .setParameter("username", user.getUsername())
  |          .getResultList();
  |       if (existing.size()==0)
  |       {
  |          em.merge(user);
  |          log.info("Registered new user #{user.username}");
  |          return "/registered.jsp";
  |       }
  |       else
  |       {
  |          FacesMessages.instance().add("User #{user.username} already 
exists");
  |          return null;
  |       }
  |    }
  | 
  | }
  | 

Thanks for your help. To restate the question, why wouldn't merge simply update 
the user info instead of creating a new user? Obviously the later is what I 
want, but I am not sure why this works the way it is setup currently.

-hc

View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3959775#3959775

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3959775
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to