1 Reply Latest reply on Aug 15, 2006 3:34 PM by bfo81

    Trouble calling Stateless Bean

    sjmenden

      I have a page to show the groups in my system. There are a series of links to allow the user to modify the group. I am having trouble implementing the first of those links where the user clicks to edit the group itself.

      <h:commandLink value="Edit Information" action="#{editGroup.update}">
       <f:param name="groupId" value="#{groupUsers.group.groupId}"/>
      </h:commandLink>
      


      @Name("editGroup")
      @Stateless
      public class EditGroup implements IEditGroup {
      
       @RequestParameter
       private Long groupId;
      
       @Logger
       private Log log;
      
       private EntityManager em;
      
       @In(create=false) @Out
       Group group;
      
       public String update() {
       //Verify groupId is set
       if(groupId == null || groupId.equals("")){return null;}
      
       Map<String, Object> parameters = new HashMap<String, Object>();
      
       log.info("\n\nFinding Group with groupId: " + groupId + "\n\n");
      
       Query query = em.createQuery("from Group group where group.groupId = :groupId");
       parameters.put("groupId", groupId);
      
       for (Entry <String, Object> param : parameters.entrySet()) {
       query.setParameter( param.getKey(), param.getValue() );
       }
       log.info("Querying for group");
       Group attachedGroup = (Group) query.getSingleResult();
       log.info("Found group object: " + group);
      
       if(group == null) {
       group = attachedGroup;
       } else {
       log.info("group was not null, attempting to update the attached group");
       attachedGroup.setName(group.getName());
       attachedGroup.setAddress(group.getAddress());
       attachedGroup.setAddress2(group.getAddress2());
       ...
       ...
       ...
       }
      
       return "editGroup";
       }
      }
      
      




      The error when I click on the link is as follows:
      WARNING: Component _id13 just got an automatic id, because there was no id assigned yet. If this component was created dynamically (i.e. not by a JSP tag) you should assign it an explicit static id or assign it the id you get from the createUniqueId from the current UIViewRoot component right after creation!
      14:14:09,411 ERROR [[Faces Servlet]] Servlet.service() for servlet Faces Servlet threw exception
      javax.faces.FacesException: Error calling action method of component with id _id1
       at org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:74)
       at javax.faces.component.UICommand.broadcast(UICommand.java:106)
       at javax.faces.component.UIViewRoot._broadcastForPhase(UIViewRoot.java:90)
       at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:164)
       at org.apache.myfaces.lifecycle.LifecycleImpl.invokeApplication(LifecycleImpl.java:316)
       at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:86)
       at javax.faces.webapp.FacesServlet.service(FacesServlet.java:106)
      



      I'm probably doing my @Stateless bean completely against convention, but all I want is to load the group on demand and update on demand, I dont' think it needs to be statefull.

      I thought I could just create a @Stateless bean and invoke it from anywhere, but I must be missing something, help is needed with that *something*.

      Thanks.