【问题标题】:The method openDialog(String) is undefined for the type RequestContext对于 RequestContext 类型,方法 openDialog(String) 未定义
【发布时间】:2013-09-30 04:18:01
【问题描述】:

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

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

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

但是,它导致了编译错误:

未定义类型 RequestContext 的方法 openDialog(String)

我寻找了一种在 JavaScript 中执行此操作的方法,但不清楚如何在 JavaScript 中执行此操作。如何在按下按钮时打开<p:dialog>

【问题讨论】:

  • 你看过<p:dialog>展示页面吗?否则,您是否检查过任何内容,因为您的问题是基本问题?你最好从一本关于 JSF 和/或 PrimeFaces 的基本书开始(重新)开始。祝你好运!

标签: jsf primefaces dialog requestcontext


【解决方案1】:

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

例如纯粹在视图中:

<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()");
}

【讨论】:

  • 这样你可以显示一个包含在当前xhtml页面中的对话框。但是,如果您查看 PF 展示,“viewCars”是一个不同的 xhtml 页面。有没有办法用 PF 3.5 加载另一个 xhtml 页面?
  • @yannicuLar:不。这是 PF 4.0 新的“对话框架”功能的一部分。只需升级到 PF 4.0。
  • 不用担心,我已经设法通过在 ui:include 中包含对话框来做到这一点
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-05
  • 2023-03-26
  • 2015-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多