About propagating a value in a conversation
rlhr Jun 20, 2006 10:50 AMHello,
I have a conversation started through a page action ("Push"-style MVC).
In pages.xml, I have:
<page view-id="/check.xhtml" action="#{check.perform}" />
The bean is define as followed:
@Stateless
@Name("check")
public class CheckAction implements Check {
@Out(scope=ScopeType.SESSION, required=false)
private User user;
@PersistenceContext
private EntityManager em;
@In(create=true)
private transient FacesMessages facesMessages;
@RequestParameter
private String username;
@RequestParameter
private String action;
@Logger
private Log log;
public String perform() {
// Retrieve the user from the username
user = ...;
// Save action in the context
Contexts.getConversationContext().set("action", this.action);
return "home";
}
// Getters and Setters
...
}The home.xhtml files is loaded properly and on onload call loads view.xml in another frame. The url used to load view.xhtml is:
http://localhost:8080/default/view.seam?conversationId=#{conversation.id}
Until this point, everything seems to be fine and I could check that the conversationId was properly passed in the url.
Now in the view.xhtml page, there are some fields inside a form and a submit button defined with a s:link
<s:link action="#{view.change}" value="submit" buttonClass="button" linkStyle="button"/>
Where view is another stateless bean.
@Stateless
@Name("view")
public class ViewAction implements View{
@In
@Out
private User user;
@PersistenceContext
private EntityManager em;
@In
private transient Context sessionContext;
@In(create=true)
private transient FacesMessages facesMessages;
@In
private String action;
private String definition;
@Logger
private Log log;
public String change() {
log.debug("****************** action: " + this.action);
return null;
}
//Getters and Setters
...
}I was expecting this.action not to be null but since I propagated the conversation all the way (I believe s:link does propagate the conversation as well).
I thought by setting a value et putting it in the conversation context, it would be propagated, but it is not, so I guess I might do something wrong here, but I'm not sure what...
If someone see what's wrong, I'd like to understand.
Thanks
Richard