0 Replies Latest reply on Nov 28, 2007 12:28 PM by raoul.schmidiger

    Still need form backing beans in user registration process

    raoul.schmidiger

      Hello,

      I adapted the "booking example" that ships with the seam distribuition and run into some problems. The User object is a Ejb3 entity object with scope of Session. It is instantiated and injected by seam as the submit button is pressed on the register.xhtml page.

      For a logged in user, the session scope makes sense. however in this scenario, it is not desirable to keep the state of the user (the object itself).

      It would be desirable to always create a new instance of the user object, when the register.xhtml page is opened (linked-in).

      The example in the demo app only works, because the username is taken as primary key: it will be set to a new value each time anyway. The same object is reused over and over again this way.

      When using a Long as id like this:

      @Id
      @GeneratedValue(strategy = GenerationType.AUTO)
      public Long getId() {
       return id;
      }
      


      ...the app will throw an exception. (Detatched object passed to persist). Instead of using a "form backing (dto style) bean", I did a workaround hack (from the register method in RegisterAction):

      final User allNewUser = new User();
      allNewUser.setUsername(user.getUsername());
      allNewUser.setName(user.getName());
      allNewUser.setPassword(user.getPassword());
      
      em.persist(allNewUser);
      


      Here the var named user is the one passed in by seam and obviously all its fields are copyied over to a new instance.

      This is of course not nice and I would like to learn how to implement this properly (using seam).

      What am I missing?

      Thanks a lot for your help, regards raoul