I'm currently trying out sending the id of a record from one page to another page.
So in the page 1, i have something like this :
<p:column>
<h:link value="#{rpb.map['transNum']}" outcome="TInput.xhtml">
<f:param name="id" value="#{rpb.map['id']}" />
</h:link>
</p:column>
and in the target page (TInput.xhtml), i have something like this to capture the id :
....
xmlns:fn="http://java.sun.com/jsp/jstl/functions">
<f:metadata>
<f:viewParam name="id" value="#{tInputBean.id}"></f:viewParam>
</f:metadata>
<h:head>
....
Now, clicking on the link, goes to page 2, and page 2 is handled by one view-scoped jsf bean. And from my debugging, this is the order of happenning :
What i would like to achieve is that : after the model is updated, i would like to execute a query for that record id, get it's bean and it's list of details from Business Service.
I wonder where should i could put my query code :
Please enlighten me :)
Add a <f:event type="preRenderView">
to the <f:metadata>
.
<f:metadata>
<f:viewParam name="id" value="#{tInputBean.id}" />
<f:event type="preRenderView" listener="#{tInputBean.init}" />
</f:metadata>
with a
public void init(ComponentSystemEvent event) throws AbortProcessingException {
// ...
}
(by the way, in contrary to the documentation, the argument and the exception are optional, at least in all Mojarra 2.x versions I've had used)
I used the BalusC solution. Thanks;)
I just want to add if you use facelet, you need to put :
<f:metadata>
in each page using the template:
mytemplate.xhtml:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets">
<ui:insert name="meta"/>
mypage.xhtml using mytemplate.xhtml:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<ui:composition template="mytemplate">
<ui:define name="meta">
<f:metadata>
<f:viewParam name="id" value="#{tInputBean.id}" />
<f:event type="preRenderView" listener="#{tInputBean.init}" />
</f:metadata>
</ui:define>
...
Solution found at : https://forums.oracle.com/forums/thread.jspa?threadID=2145709
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With