我有一个具有视图范围的 bean,并希望在两个不同页面之间以及在此链接之前的第一页上传递参数,我在<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>
//在第二页
<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
}
但是当我试图在第二页上获得价值时,我没有什么可表达的#{addQuestion.test.testIdentifer.testId}"
而且在开发模式下我也得到 了
具有 null 值,因此不会添加到 URL。
My#{testConverter}
是视图范围内的托管 bean。
如何在一个具有视图范围的 bean 中传递 testId 以及为什么会出现此错误?