FacesContext.getCurrentInstance возвращает значение null в демонстрационной версии диалогового окна PrimeFaces Dialog Framework
Я хочу запустить демонстрационную демонстрационную платформу Dialog Framework - Данные на GlassFish 4.1 и NetBeans 8.0.2. Я копирую / вставляю код из витрины. Но я столкнулся с NullPointerException в этой строке:
FacesContext.getCurrentInstance().addMessage(null, message);
Код ошибки
java.lang.NullPointerException
at Beans.DFView.onCarChosen(CalculateBean.java:27)
Я прочитал, что у меня должно быть другое приложение сервлета для связи с клиентом, но я не могу найти ссылку с руководством, как это сделать.
Я прочитал, что я должен добавить этот код в face-config.xml:
<application>
<action-listener>org.primefaces.application.DialogActionListener</action-listener>
<navigation-handler>org.primefaces.application.DialogNavigationHandler</navigation-handler>
<view-handler>org.primefaces.application.DialogViewHandler</view-handler>
</application>
Ссылка на сообщение Натальи Зон: Primefaces JSF null, возвращенный из RequestContext.getCurrentInstance() Здесь я читаю кое-что о Push Server: Developer.am
1 ответ
Во-первых, моя ошибка была в том, что мой код был грязным, потому что я пробовал так много решений, разрабатывая веб-приложения, вы должны быть в два раза более чистыми, чем что-то делать в настольных приложениях, потому что этот тип приложений более чувствителен.
Кроме того, после того как я прочитал http://balusc.omnifaces.org/2006/06/communication-in-jsf.html, я собираюсь изучить технологию сервлетов и попытаться сделать это.
PS: решение было простое, очистите ваш код, добавьте его в ваш face-config:
<application>
<action-listener>
org.primefaces.application.DialogActionListener
</action-listener>
<navigation-handler>
org.primefaces.application.DialogNavigationHandler
</navigation-handler>
<view-handler>
org.primefaces.application.DialogViewHandler
</view-handler>
</application>
и это должно бежать. Если нет, создайте новый проект WebApplication и скопируйте / вставьте весь код из витрины, а если он не запущен, повторите воспроизведение.