簡體   English   中英

選擇器菜單的Primefaces RequestContext.getCurrentInstance()。reset

[英]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:tabtable (根本不是JSF組件)不是那些組件之一。

從您的代碼中,僅實現javax.faces.component.NamingContainer組件是p:tabViewh: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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM