2012-06-10 3 views
4

В веб-приложении JSF 2.1 + PrimeFaces 3.2 мне нужно запустить функцию JavaScript после загрузки p:dataTable. Я знаю, что в этом компоненте нет такого события, поэтому я должен найти обходное решение.Запуск действия JavaScript после загрузки Datatable

Чтобы лучше понять сценарий, при загрузке страницы dataTable не отображается. Он оказанными после успешного входа в систему:

<p:commandButton value="Login" update=":aComponentHoldingMyDataTable" 
            action="#{loginBean.login}" 
            oncomplete="handleLoginRequest(xhr, status, args)"/> 

Как вы можете видеть из приведенного выше кода, у меня есть крюк JavaScript после успешного входа в систему, если это может быть какой-либо помощи. Атрибут update заставляет оказывается атрибут DataTable к переоценивать:

<p:dataTable var="person" value="#{myBean.lazyModel}" rendered="#{p:userPrincipal() != null}" /> 

После загрузки DataTable, мне нужно запустить функцию JavaScript для каждого элемента строки, для того, чтобы подписаться на cometD тему.

В теории я мог бы использовать атрибут oncomplete кнопки входа для запуска свойства от myBean, чтобы снова получить значения, отображаемые в dataTable, но это не кажется очень изящным.

функция

JavaScript должен сделать что-то с rowKey каждой строки из DataTable:

function javaScriptFunctionToBeTriggered(rowKey) { 
    // do something 
} 
+0

Можете ли вы, возможно, объяснить, что вы пытаетесь сделать из описания пользовательской истории? У меня возникли проблемы с пониманием того, чего вы хотите достичь, потому что, возможно, есть намного более простой и элегантный способ добиться того, что вы пытаетесь сделать. –

+0

@maple_shaft Я старался быть максимально ясным, и я посвятил некоторое время в публикации моего вопроса. Пожалуйста, дайте мне знать, что неясно, чтобы я мог его улучшить. – perissf

+0

«Сразу после завершения действия« oncomplete »атрибут update отображает« dataTable ». Эта часть не ясна. 'oncomplete' - действие на стороне клиента и приходит * после * обновления ajax. –

ответ

3

Javascript метод из атрибута oncomplete называется после запроса Ajax закончил и, таким образом, после в Загружается dataTable.

Таким образом, вы можете сделать следующее:

<p:commandButton ... oncomplete="doSomething()"/> 

и все должно работать нормально.

0

если перезагрузки страницы, попробуйте позвонить в документ, готовый:

$(document).ready(function() { 
    doSomething(); 
}); 
Смежные вопросы