繁体   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