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.