Ray*_*Ray 2 jsf selectonemenu primefaces jsf-2
我有一个带有视图范围的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>
Run Code Online (Sandbox Code Playgroud)
//在第二页
<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>
Run Code Online (Sandbox Code Playgroud)
和豆
@ManagedBean(name = "addQuestion")
@ViewScoped
public class AddQuestion implements Serializable {
private Test test;
//get
//set
}
Run Code Online (Sandbox Code Playgroud)
但是当我试图在第二页上获得价值时,我没有什么可以得到表达#{addQuestion.test.testIdentifer.testId}"而且在开发模式中我得到了
值为null,因此不会添加到URL.
我#{testConverter}是视图范围内的托管bean.
我如何在一个带有视图范围的bean中传递testId以及为什么我会收到此错误?
Bal*_*usC 10
<f:xxx>像<f:param>这样的标签不生成任何HTML,因此在ajax请求的HTML DOM树中没有任何更新.<h:xxx>组件是生成HTML 的组件,可以在ajax请求的HTML DOM树中更新.您需要更新<h:link>组件而不是<f:param>标记.所以,id从<f:param>那里移动到<h:link>.
<h:link id="testId" value="Add new question" outcome="addQuestion">
<f:param name="testId" value="#{addQuestion.test.testIdentifer.testId}"/>
</h:link>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7109 次 |
| 最近记录: |