I have one bean with view scope and want pass parametr between two different pages and on first page before this link I have <p:selectOneMenu/> where I choose test which id should be pass as GET param
<p:selectOneMenu value="#{addQuestion.test}" id="tests"
converter="#{testConverter}" required="true" requiredMessage="Please, choose test">
<f:selectItem itemLabel="--Select a test--" itemValue="" />
<f:selectItems value="#{addQuestion.testList}" var="testItem"
itemValue="#{testItem}" itemLabel="#{testItem.testName}" />
<p:ajax process="@this"
listener="#{addQuestion.getQuestionsBySubject()}"
update="addingQuestionsTable, testId" />
</p:selectOneMenu>
<h:link value="Add new question" outcome="addQuestion">
<f:param id="testId" name="testId" value="#{addQuestion.test.testIdentifer.testId}"/>
</h:link>
//in second page
<f:metadata>
<f:viewParam name="testId"
value="#{addQuestion.test.testIdentifer.testId}"
converter="#{testConverter}" required="true" requiredMessage="Invalid page access. Please use a link from within the system."/>
</f:metadata>
And bean
@ManagedBean(name = "addQuestion")
@ViewScoped
public class AddQuestion implements Serializable {
private Test test;
//get
//set
}
But when I try to get value on second page I nothing to get in expression #{addQuestion.test.testIdentifer.testId}" And also in development mode I get
has a value of null and thus will not be added to the URL.
My #{testConverter} is managed bean in view scope.
How I can pass testId in one bean with view scope and why I get this error?
The
<f:xxx>tags like<f:param>doesn’t generate any HTML and thus have nothing to update in the HTML DOM tree on ajax request. The<h:xxx>components are the ones which generate HTML and are updatable in the HTML DOM tree on ajax request. You need to update the<h:link>component instead of the<f:param>tag. So, move thatidfrom<f:param>to<h:link>.