![](/img/trans.png)
[英]RequestContext.getCurrentInstance().update doesn't work
[英]Primefaces RequestContext.getCurrentInstance().reset for selectonemenu
我使用Primefaces 5,我想將selectonemenu重置為默認值。
我有一個分頁結構,所以:
<p:fragment>
<p:tabView id="tabview1" cache="false" dynamic="true" >
<p:tab title="One" id="tab1">
<ui:include src="tab1.xhtml" />
</p:tab>
<p:tab title="Two" id="tab2" >
<ui:include src="tab2.xhtml"/>
</p:tab>
</p:tabView>
</p:fragment>
然后,以tab1.xhtml為例:
<h:form id="frm1">
<table id="tbl1">
<tr>
<td>
<p:selectOneMenu id="select1"
value="#{bean.test}"
valueChangeListener="#{bean.setXXX}"
var="var1" >
<f:selectItem itemLabel="Select..."
itemValue="#{null}" />
<f:selectItems var="var2"
value="#{bean.list}"
itemLabel="#{var2.label}"
itemValue="#{var2}"/>
<p:ajax process="@this" event="change" update="@this"/>
</p:selectOneMenu>
</td>
</tr>
</table>
</h:form>
我相信要重置我的selectone菜單,可以在setXXX方法中編寫:RequestContext.getCurrentInstance()。reset(“ tabView1:tab1:frm1:tbl1:select1”);
不起作用,我很抱歉“由:java.lang.IllegalArgumentException引起”
任何想法? 什么是重置的正確路徑?
謝謝
據我了解,重置的含義是再次為選擇菜單建立默認值,不是嗎?
在那種情況下,事情很簡單。 您只需要修改所選項目的當前值即可。 所以,在您的支持bean“豆”,在方法的setXXX只是重置屬性=“#{豆。 測試 }”的原始值。
當ajax更新組合時,它將刷新最近的默認值測試。
您正在使用tabView1:tab1:frm1:tbl1:select1
引用組件。
其中有2個錯誤。
在JSF / Primefaces中,實現javax.faces.component.NamingContainer的組件是將其ID附加到內部組件的唯一組件。
因此p:tab
和table
(根本不是JSF組件)不是那些組件之一。
從您的代碼中,僅實現javax.faces.component.NamingContainer
組件是p:tabView
和h:form
。
因此,您的p:selectOneMenu
ID將為tabview1:frm1:select1
RequestContext.getCurrentInstance().reset("tabview1:frm1:select1");
您可以從瀏覽器的檢查元素中查找它。
並記住在reset
更新組件,您可以使用Requestcontext
從ManagedBean本身進行Requestcontext
RequestContext.getCurrentInstance().update("tabview1:frm1:select1");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.