ビュー スコープを持つ 1 つの Bean があり、2 つの異なるページ間で、このリンクの前の最初のページでパラメーターを渡したいと考えてい<p:selectOneMenu/>
ます。どの ID を GET パラメーターとして渡すかをテストします。
<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>
// 2 ページ目
<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>
そして豆
@ManagedBean(name = "addQuestion")
@ViewScoped
public class AddQuestion implements Serializable {
private Test test;
//get
//set
}
しかし、2番目のページで値を取得しようとすると、式では何も得られず#{addQuestion.test.testIdentifer.testId}"
、開発モードでも得られます
null の値を持つため、URL に追加されません。
私#{testConverter}
はビュースコープのマネージドBeanです。
ビュー スコープを持つ 1 つの Bean で testId を渡す方法と、このエラーが発生する理由を教えてください。