Эта проблема может возникать, когда список, стоящий за #{bean.list}
, равен , а не , точно так же во время HTTP-запроса на обработку отправки формы, как это было во время запроса на отображение формы. JSF будет повторять список, чтобы найти нажатую кнопку и вызвать ее действие.
Если bean-компонент является областью действия запроса, а список не заполняется во время (пост) построения bean-компонента, или заполнение списка зависит от переменной области запроса, которая была потеряна во время отправки формы, тогда JSF получит пустой или совершенно другой список при обработке отправки формы и, следовательно, не сможет найти нажатой кнопку и не будет вызывать никаких действий.
Лучшее решение - поместить компонент в область видимости и обеспечить правильную загрузку модели данных.
@ManagedBean
@ViewScoped
public class Bean implements Serializable {
private List<Item> list;
@EJB
private ItemService service;
@PostConstruct
public void init() {
list = service.list();
}
// ...
}
Смотри также: