我在一个xhtml页面中有一个a4j命令按钮,在另一个页面中有弹出面板。我想在第一页的命令按钮上打开弹出窗口。 命令按钮
auth.xhtml
<a4j:commandButton id="Add" value="Add New" type="submit"
action="#{controller.add}"
render=":addPopupForm:addPopupOp">
<a4j:param value="true" assignTo="#{controller.ind}" ></a4j:param>
</a4j:commandButton>
addPopup.xhtml
<h:form id="addPopupForm">
<a4j:outputPanel id="addPopupOp" ajaxRendered="true">
<rich:popupPanel id="addPopup" domElementAttachment="parent" show="true"
rendered="true" height="600" width="1000" >
Row is added
</rich:popupPanel>
</rich:outputPanel>
</h:form>
答案 0 :(得分:0)
我不是富有用户的用户,但在一般的JSF中,你不能重新渲染那些首先没有呈现的元素。
因此,在您的情况下,您应该指向addPopupForm
,如下所示:
<a4j:commandButton id="Add" value="Add New" type="submit"
action="#{controller.add}"
render=":addPopupForm" >
或者使用一些将始终呈现的包装器a4j:outputPanel
包装
另外,请看一下:Can you update an h:outputLabel from a p:ajax listener?
答案 1 :(得分:0)
仅渲染面板并不意味着显示它。您必须将弹出“show”属性附加到属性:
show="#{bean.showPopup}"
在action方法中设置showPopup布尔值(action =“#{controller.add}”),然后执行render =“addPopupForm”