Trouble calling Stateless Bean
sjmenden Aug 15, 2006 2:44 PMI 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.