Я все еще не уверен, почему составной метод не имеет эффекта при вызове. Вероятно, он не вызывается во время до или после правильной фазы (я буду профилировать это позже). Так или иначе, я нашел решение с двумя ребрами (это решение моей проблемы , но заставляет меня пожертвовать использованием ajax ):
Итак, вместо вызова - из каждого управляемого компонента - метод (prepareList ()), который я использую в качестве слушателя:
private DataModel items = null; // Getter to retrieve items
// ......
public String prepareList() {
recreatemodel();
return "List";
}
private void recreatemodel(){
items=null;
}
(кстати, этот метод устанавливает для модели данных значение NULL
, чтобы обновить ее, и именно так обновляются мои данные).
Внутри командной кнопки я вложил свойство слушателя действия:
<h:commandButton image="#{resource['images/search.png']}" id="searchbutton" value="#{bundle.Search}"
action="submit"
disabled="#{empty ddnController.patientID or ddnController.patientID.equals('0')}">
<f:PropertyActionListener target="#{ddnController.items}" value="#{null}" />
<f:PropertyActionListener target="#{evalController.items}" value="#{null}" />
<f:PropertyActionListener target="#{corController.items}" value="#{null}" />
<!--...etc -->
</h:commandButton>
Я бы хотел, чтобы <f:PropertyActionListener />
мог быть вложен внутрь <h:ajax/>.
Если у кого-то есть решение, позволяющее использовать слушатель действия свойства и ajax , чтобы избежать отправки формы с помощью кнопки, он / она приветствуется. Тогда я сделаю его / ее ответ принятым.