Reputation:
I have a RequestController
(@ManagedBean and @ViewScoped) it is view scoped because we are using some ajax calls.
I have a dataTable with result and each result with a button
<p:commandButton action="#{requestController.requestDetail()}" icon="ui-icon-search" title="Detalhes">
<f:setPropertyActionListener target="#{requestController.backing.selectedRequestVO}" value="#{order}" />
</p:commandButton>
This method is receiving the selected object of my dataTable and is set on the session, it is working, the problem is that I don't know how to get this session object from my view.
public void requestDetail() throws IOException {
FacesContext context = FacesContext.getCurrentInstance();
context.getExternalContext().getSessionMap().put("requestDetail",backing.selectedRequestVO);context.getExternalContext().redirect(context.getExternalContext().getRequestContextPath() + "/views/request/detail.html");
}
I need to access it from my view because this object has the request details.
Upvotes: 1
Views: 1531
Reputation: 1108722
It's just available by the attribute name which you specified yourself.
#{requestDetail}
Note that this is not the correct approach. You should have another session scoped managed bean which you inject as @ManagedProperty
in the view scoped managed bean and then set the request detail as its property.
@ManagedBean
@ViewScoped
public class RequestController {
@ManagedProperty("#{requestDetail}")
private RequestDetail requestDetail;
public String requestDetail() {
requestDetail.setSelectedRequestVO(backing.getSelectedRequestVO());
return "/views/request/detail.html?faces-redirect=true";
}
// ...
}
with
@ManagedBean
@SessionScoped
public class RequestDetail {
private RequestVO selectedRequestVO;
// ...
}
which you then access as follows
#{requestDetail.selectedRequestVO}
Upvotes: 3