![](/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.