2012-03-17 41 views
3

如何在弹出式面板显示之前从backing bean调用方法?Richfaces弹出式面板

<h:commandButton value="Call the popup" action="#{bean.doSomething}" > 
    <rich:componentControl target="popup" operation="show" /> 
</h:commandButton> 

<rich:popupPanel id="popup" modal="true" resizeable="true" onmaskclick="#{rich:component('popup')}.hide()"> 
    ... 
</rich:popupPanel> 

在这种情况下doSomething的()方法不调用。

回答

5

a4j:ajaxcommandButton或使用a4j:commandButton。这两个组件有一个oncomplete属性,在那里你可以把那这样开弹出的对话框代码:

<a4j:commandButton value="Call the popup" action="#{bean.doSomething}" oncomplete="#{rich:component('popup')}.show()"> 
</a4j:commandButton> 

单击该按钮时,这将执行一个Ajax请求,并在请求完成将打开弹出窗口。

+0

它的工作原理,谢谢:) – 2012-03-18 10:36:31

+0

我可能会补充说,如果你想重新渲染弹出窗口的内容(例如延迟加载数据),你会想要在a4j上粘贴一个渲染属性:commandButton标签。 – 2013-05-31 16:02:58

1

你可以简单地使用f:ajax上成功的响应显示弹出

请参见

+0

要在哪里使用f一点更详细:阿贾克斯,如果我使用f:未富先AJAX:componentControl弹出的面板不显示。你的意思是把f:ajax放在rich:popupPanel中? – 2012-03-17 20:06:49

1

我想你应该在这种情况下使用actionListener。该动作用于更改视图,我假设您只想显示弹出窗口。

MAG, 米洛

+0

否定的。 actionListener的目的是调用服务器端代码。他想要/需要的是调用客户端代码(显示弹出窗口)。 – 2012-03-17 21:26:58

+0

我的意思是他打给后端。 'doSomething'代码。 – 2012-03-18 18:48:56

相关问题