我想以编程方式打开<p:dialog>
。
我尝试了在the DialogBean
example of PrimeFaces showcase中找到的代码:
RequestContext.getCurrentInstance().openDialog("viewCars");
但是,它导致编译错误:
对于RequestContext类型
,未定义openDialog(String)方法
我在JavaScript中寻找了一种方法,但目前尚不清楚如何在JavaScript中完成它。如何按下按钮打开<p:dialog>
?
答案 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()");
}