我有一个包含PrimeFaces(2.2.1)编辑器组件,刷新按钮和selectOneMenu的页面,其选择会影响编辑器的内容,如下所示:
<p:editor id="uploadedText" value="#{facilityDataUploadBean.uploadedText}"
width="600" height="180" disabled="true" controls="" />
<h:commandButton value="Refresh" immediate="true" />
<h:selectOneMenu id="skipLines" styleClass="dropdown"
value="#{facilityDataUploadBean.skipLines}">
<f:selectItems value="#{facilityDataUploadBean.skipLinesList}" />
<f:ajax listener="#{facilityDataUploadBean.importParameterChanged}" />
</h:selectOneMenu>
facilityDataUploadBean.importParameterChanged
更新facilityDataUploadBean.uploadedText
。更改selectOneMenu值后,操作员按“刷新”按钮刷新页面,包括p:editor
的内容。 (我不能简单地使用AJAX刷新p:editor
,因为它不能正确地重新渲染,至少在PF 2.2.1中。)
似乎我应该能够在selectOneMenu
值更改时自动完成页面刷新,但我无法提出将要执行此操作的属性和事件的组合。我在onchange="submit();"
上尝试了immediate="true"
,valueChangeListener
和selectOneMenu
的各种组合,以及execute="@all/@form"
上的render="@all/@form"
,f:ajax
1}}事件,一切都无济于事。我目前的解决方法是显示一条消息,要求用户在更改selectOneMenu
选项时按下“刷新”按钮 - 非常好看。
答案 0 :(得分:5)
在window.location.replace(window.location.href)
事件中调用submit()
而不是onchange
,如:
<h:selectOneMenu id="skipLines" ... onchange="window.location.replace(window.location.href);">
<f:selectItems ... />
<f:ajax ... />
</h:selectOneMenu>
答案 1 :(得分:1)
请尝试onchange="window.location.reload();"
方法:
<h:selectOneMenu id="skipLines" ... onchange="window.location.reload();">
<f:selectItems ... />
<f:ajax ... />
</h:selectOneMenu>
这在我的环境中工作得很好(GF 3.1.1,PF 3.2),但请注意,有可能会中断某些ajax功能。
希望有这种帮助,玩得开心!