2016-04-19 2 views
0

Я пытаюсь обновить содержимое области окна, нажав на primefaces commandlink:переоценивать OnComplete JSF - primefaces

<p:commandLink oncomplete="if(#{documentController.documentAlreadyOpenedInExternalWindow}) window.open('previewDocument.xhtml?documentId=#{documentController.documentId(task)}', 'new');" 

но проверка состояния кажется, никогда не будет испытана снова?

<p:commandLink oncomplete="if(true) window.open('previewDocument.xhtml?documentId=#{documentController.documentId(task)}', 'new');" 

выше заявление будет конечно открыть окно с каждым щелчком ..

Как я мог решить эту проблему?

Primefaces 5,2

+0

обновив сам commandLink ... – Kukeltje

+0

@Kukeltje пробовал, но не кажется, что это будет работать. – GregD

+0

«Кажется, не работает» ... Что происходит ** **? Как выглядит ответ? Что вы на самом деле делали? – Kukeltje

ответ

-1

, что я понял, вопрос это вы пытаетесь обновить содержимое окна, если она уже открыта еще открыта в новом окне вы можете использовать условный оператор, и если ваше поле documentAlreadyOpenedInExternalWindowis является булево, то вы можете использовать как это

<p:commandLink oncomplete=" 
     #{documentController.documentAlreadyOpenedInExternalWindow?alert('succeed'); 
    :window.open('previewDocument.xhtml?documentId=#{documentController.documentId(task)}', 'new')" 
update="yourElement/Form ID"/> 
+0

Вот что помещено в моем вопросе и не работает. OnComplete оценивается при рендеринге моей страницы, а не после завершения действия. – GregD

+0

Является ли контроллер видимым? и страница с того места, где вы открываете, и открытая страница ссылается на тот же контроллер, и в какой степени эти контроллеры пытаются поставить точку отладки в конструкторе и настройке поля, я думаю, что ваше поле повторно инициализируется либо после того, как вы переходить в другое окно или когда вы нажимаете на то, что является значением 'documentAlreadyOpenedInExternalWindow', когда вы нажимаете. – techipank

Смежные вопросы