对于RequestContext类型,未定义openDialog(String)方法

时间:2013-09-30 04:18:02

标签: jsf primefaces dialog requestcontext

我想以编程方式打开<p:dialog>

我尝试了在the DialogBean example of PrimeFaces showcase中找到的代码:

RequestContext.getCurrentInstance().openDialog("viewCars");

但是,它导致编译错误:

  

对于RequestContext类型

,未定义openDialog(String)方法

我在JavaScript中寻找了一种方法,但目前尚不清楚如何在JavaScript中完成它。如何按下按钮打开<p:dialog>

1 个答案:

答案 0 :(得分:0)

PrimeFaces展示目前运行PrimeFaces 4.0。仔细查看网站页脚中的版本信息。 RequestContext#openDialog()是在PrimeFaces 4.0中引入的,确实是absent in 3.5。因此,此编译错误表明您使用的是旧版本,例如3.5。在该版本中,您应该在JavaScript变量上调用show()函数,引用您可以通过widgetVar属性指定的对话框。

E.g。纯粹在视图中:

<h:form>
    <p:commandButton ... oncomplete="dialogWidget.show()" />
</h:form>
<p:dialog widgetVar="dialogWidget" ...>
    ...
</p:dialog>

或者通过RequestContext#execute(),如果你绝对需要:

<h:form>
    <p:commandButton ... action="#{bean.openDialog}" />
</h:form>
<p:dialog widgetVar="dialogWidget" ...>
    ...
</p:dialog>

public void openDialog() {
    // ...
    RequestContext.getCurrentInstance().execute("dialogWidget.show()");
}