Метод openDialog(String) не определен для типа RequestContext
Я хотел бы открыть <p:dialog>
программно.
Я попробовал этот код, который я нашел в DialogBean
Пример демонстрации PrimeFaces:
RequestContext.getCurrentInstance().openDialog("viewCars");
Однако, это вызвало ошибку компиляции:
Метод openDialog(String) не определен для типа RequestContext
Я искал способ сделать это в JavaScript, но не ясно, как это сделать в JavaScript. Как я могу открыть <p:dialog>
на нажатие кнопки?
1 ответ
Витрина PrimeFaces работает в настоящее время PrimeFaces 4.0. Посмотрите на информацию о версии в нижнем колонтитуле сайта. RequestContext#openDialog()
был представлен в PrimeFaces 4.0 и действительно отсутствует в 3.5. Таким образом, эта ошибка компиляции предполагает, что вы используете более старую версию, такую как 3.5. В этой версии вы должны вызывать show()
функция в переменной JavaScript, ссылающаяся на диалог, который вы можете указать через 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()");
}