У меня есть следующие ApplicationScoped бобаВставьте фасоль в конвертер
package es.caib.gesma.gesman.data;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ApplicationScoped;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import es.caib.gesma.gesman.ejb.Dao;
@ManagedBean(name="priorityList")
@ApplicationScoped
public class PriorityList {
@EJB
Dao daoEjb;
private List<Priority> priorities = null;
public PriorityList() {
}
@PostConstruct
public void refresh() {
this.priorities = daoEjb.findPriorities();
}
public List<Priority> getPriorities() {
return this.priorities;
}
public Priority fromId(int id) {
for(Priority priority : this.priorities) {
if (priority.getId() == id) {
return priority;
}
}
return null;
}
}
Я стараюсь привнести что боб внутри конвертера
package es.caib.gesma.gesman.data.converter;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ApplicationScoped;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.ConverterException;
import es.caib.gesma.gesman.data.Priority;
import es.caib.gesma.gesman.data.PriorityList;
@ManagedBean
@ApplicationScoped
public class PriorityConverter implements Converter {
@ManagedProperty("#{priorityList}")
private PriorityList priorityList;
@Override
public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2) {
...
}
@Override
public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) {
...
}
public void setPriorityList(PriorityList priorityList) {
System.out.println("SET PRIORITYLIST " + priorityList);
this.priorityList = priorityList;
}
}
Всякий раз, когда я пытаюсь получить доступ к собственности, оно равно нулю. Сеттер никогда не вызывается.
От this question и this one, похоже, что невозможно вводить бобы обычным способом (пожалуйста, поправьте меня, если я ошибаюсь). Существует ли какая-либо альтернатива, поэтому я не могу каждый раз получать весь список значений из EJB (= доступ к базе данных)?
Закрыть. Это обработанный приложением компонент, поэтому мне пришлось использовать 'FacesContext.getCurrentInstance(). GetExternalContext(). GetApplicationMap(). Get (" priorityList ")' – SJuan76