2012-05-09 3 views
0

У меня странная проблема.Ошибка повторного управления обновлением

У меня есть XPage с контролем повтора, где источником данных является вид. У этого вида есть фильтр по категории. В XPage находится кнопка со следующим сценарием:

doc = session.getCurrentDatabase().createDocument();    
doc.replaceItemValue("form", "myForm"); 
doc.replaceItemValue("docId", "myID"); 
doc.save(); 

Кнопка производит частичные обновления на контроле повтора, но всегда на первый раз нажав на кнопке (после открытия XPage) не обновляет повторитель. После второго щелчка на кнопке я вижу два новых документа.

У меня такая же проблема, когда я удалить документ с точки зрения, но в данном случае я получаю следующее сообщение об ошибке:

javax.faces.el.PropertyNotFoundException: Error testing property 'label' in bean of type null 
Error testing property 'label' in bean of type null 

Любые идеи, как перезарядить контроль повтора будет лучше (без ошибок)?

ответ

2

Проблема заключается в том, что вы создаете документ на сервере, поэтому среда выполнения не знает, что создается новый документ и поэтому зависит от индексатора, добавляющего документ в представление, прежде чем он будет добавлен в обновить, что обычно происходит после небольшой задержки, поэтому после следующего обновления вы видите два документа. То, как я решил это в прошлом, которое, конечно, немного хакстатично, состоит в том, чтобы выполнить обновление с помощью setTimeout() с боем 300-500 мс задержки.

Надеюсь, это поможет.

+0

Привет, и спасибо за ваш ответ. У вас есть небольшой пример для меня, как работает с setTimeout? – Pudelduscher

+0

Я использую это в случае с клиентом кнопки, но он не работает 'setTimeout (function() { \t XSP.partialRefreshGet (" # {id: myElement} ", {}); }, 1000);' – Pudelduscher

+0

У меня только неправильный идентификатор ... теперь это работает .. спасибо – Pudelduscher

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