Метод 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()");
}
Другие вопросы по тегам