Как я могу отобразить сообщение через несколько сеансов?JSF 2.1 и Primefaces 3.1 - PullRequest
0 голосов
/ 08 марта 2012

У меня есть приложение, которое показывает некоторые данные в p: DataTable .... Эта таблица доступна для многих пользователей.Когда один пользователь изменяет запись в таблице (создание, редактирование, удаление), об этом действии уведомляет @ApplicationScoped ManagedBean, который уведомляет все другие сеансы (открытые другими пользователями) о том, что элементы в таблице изменены, затем оннеобходимо перезагрузить из базы данных.Как вы можете видеть, это контроллер, который уведомляет весь сеанс о том, что элементы изменены,

/**
 * @author Simone Rondelli
 */
@ManagedBean(name="singleton")
@ApplicationScoped
public class SingletonBean {

    private int count;
    private HashMap<Class, List<AbstractController>> sessions;

    public SingletonBean() {
        sessions = new HashMap<Class, List<AbstractController>>();
    }

    public void addSession(AbstractController session, Class c) {
        List<AbstractController> sessionList = sessions.get(c);
        if(sessionList == null)
            sessionList = new ArrayList<AbstractController>();

        sessionList.add(session);
        sessions.put(c, sessionList);
    }

    public void notifyItemsChanged(Class type) {
        for(AbstractController a : sessions.get(type)) {
            a.prepareList();
            a.addWarningMessage("Attenzione i record sono stati modificati!!");
        }
    }
}

это код в AbstractController, который «пытается» показать сообщение

public void addWarningMessage(String msg) {
    //JsfUtil.addWarningMessage(msg);
    FacesMessage facesMsg = new FacesMessage(FacesMessage.SEVERITY_WARN, msg, msg);
    FacesContext.getCurrentInstance().addMessage(null, facesMsg);
}

если вы нажмете клавишу f5, на любой другой странице будут показаны новые записи ... Но я хочу, чтобы сообщения отправлялись во все другие сеансы ... Теперь с моим кодом сообщения отображаются на странице, где выполняется изменение, многиевремя как количество открытых сеансов ... Итак, если у меня есть 3 сеанса с 3 пользователями, и один из них внесет некоторые изменения в таблицу, он увидит 3 сообщения на своей странице, в то время как другие пользователи ничего не увидят.

  • Как я могу отправлять сообщения всем сессиям ??

1 Ответ

0 голосов
/ 08 марта 2012

Я думаю, что вы должны проверить Primefaces Push, посмотрите на примеры там ...

PrimePush

Или вы можете попробовать Ajax Poll AJAX Poll

Здесь ref 'для Задвиньте вопрос Glassfish

...