Fórum Notificação usando o Primefaces Push #615771
14/05/2021
0
Estou desenvolvendo uma aplicação Primefaces Push e recebo essa mensagem de erro: "GRAVE: java.lang.NullPointerException".
Essa linha "eventBus.publish(CHANNEL, new FacesMessage(StringEscapeUtils.escapeHtml(summary), StringEscapeUtils.escapeHtml(detail)));" está retornando como NULL.
Como poderia solucionar esse erro?
Segue o código:
Essa linha "eventBus.publish(CHANNEL, new FacesMessage(StringEscapeUtils.escapeHtml(summary), StringEscapeUtils.escapeHtml(detail)));" está retornando como NULL.
Como poderia solucionar esse erro?
Segue o código:
import javax.faces.application.FacesMessage;
import org.primefaces.push.annotation.OnMessage;
import org.primefaces.push.annotation.PushEndpoint;
import org.primefaces.push.impl.JSONEncoder;
/**
*
* @author Antonio Alves de Lima Filho
*/
@PushEndpoint("/notify")
public class NotifyResource {
@OnMessage(encoders = (JSONEncoder.class))
public FacesMessage onMessage(FacesMessage message) {
return message;
}
}
import java.util.List;
import br.com.dentalweb.model.Notificacao;
/**
*
* @author Antonio Alves de Lima Filho
*/
public interface NotificacaoDao {
public void grava(Notificacao notificacao);
public void remove(Notificacao notificacao);
public void altera(Notificacao notificacao);
public List<Notificacao> listaTodos(String consulta);
public List<Notificacao> localizarMensagem(String consulta, String mensagem);
public List<Notificacao> localizarIdNotificacao(String consulta, int id);
}
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import br.com.dentalweb.model.Notificacao;
import br.com.dentalweb.util.ConnectFactory;
/**
*
* @author Antonio Alves de Lima Filho
*/
public class NotificacaoDaoImp implements NotificacaoDao{
private Session session;
private Transaction t;
private boolean commited = false;
private List<Notificacao> list;
private List lista;
private Query query;
public void grava(Notificacao notificacao) {
try{
session = ConnectFactory.getInstance();
t = session.beginTransaction();
session.save(notificacao);
t.commit();
commited = true;
}finally{
if(!commited){
t.rollback();
}
session.close();
}
}
public List<Notificacao> localizarMensagem(String consulta, String mensagem) {
try{
session = ConnectFactory.getInstance();
list = null;
query = session.getNamedQuery(consulta);
query.setString("mensagem", "%"+mensagem+"%");
list = query.list();
}finally{
session.close();
}
return list;
}
public List<Notificacao> listaTodos(String consulta) {
try{
session = ConnectFactory.getInstance();
t = session.beginTransaction();
lista = session.getNamedQuery(consulta).list();
t.commit();
}finally{
session.close();
}
return lista;
}
public void remove(Notificacao notificacao) {
try{
session = ConnectFactory.getInstance();
t = session.beginTransaction();
session.delete(notificacao);
t.commit();
commited = true;
}finally{
if(!commited){
t.rollback();
}
session.close();
}
}
public void altera(Notificacao notificacao) {
try{
session = ConnectFactory.getInstance();
t = session.beginTransaction();
session.update(notificacao);
t.commit();
commited = true;
}finally{
if(!commited){
t.rollback();
}
session.close();
}
}
public List<Notificacao> localizarIdNotificacao(String consulta, int id){
try{
session = ConnectFactory.getInstance();
list = null;
query = session.getNamedQuery(consulta);
query.setInteger("id", id);
list = query.list();
}finally{
session.close();
}
return list;
}
}
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import org.apache.commons.lang.StringEscapeUtils;
import org.primefaces.push.EventBus;
import org.primefaces.push.EventBusFactory;
import br.com.dentalweb.dao.NotificacaoDao;
import br.com.dentalweb.dao.NotificacaoDaoImp;
import br.com.dentalweb.model.Notificacao;
/**
*
* @author Antonio Alves de Lima Filho
*/
@ManagedBean(name="notificacaoController")
@RequestScoped
public class NotificacaoController implements Serializable{
/**
*
*/
private static final long serialVersionUID = -6745079899914256290L;
private String CHANNEL = "/notify";
private String summary;
private String detail;
private EventBus eventBus;
private Notificacao notificacao;
private List<Notificacao> listaNotificacao = new ArrayList<Notificacao>();
private DataModel<Notificacao> listaNotificacaoCadastradas;
private FacesMessage dlgNotificacao;
@PostConstruct
public void init() {
if(listaNotificacao.isEmpty()){
listaNotificacao = new NotificacaoDaoImp().listaTodos("notificacao.mostraTodos");
listaNotificacaoCadastradas = new ListDataModel<Notificacao>(listaNotificacao);
}
}
public String getCHANNEL() {
return CHANNEL;
}
public void setCHANNEL(String cHANNEL) {
CHANNEL = cHANNEL;
}
public String getSummary() {
return summary;
}
public void setSummary(String summary) {
this.summary = summary;
}
public String getDetail() {
return detail;
}
public void setDetail(String detail) {
this.detail = detail;
}
public EventBus getEventBus() {
return eventBus;
}
public void setEventBus(EventBus eventBus) {
this.eventBus = eventBus;
}
public Notificacao getNotificacao() {
return notificacao;
}
public void setNotificacao(Notificacao notificacao) {
this.notificacao = notificacao;
}
public List<Notificacao> getListaNotificacao() {
return listaNotificacao;
}
public void setListaNotificacao(List<Notificacao> listaNotificacao) {
this.listaNotificacao = listaNotificacao;
}
public DataModel<Notificacao> getListaNotificacaoCadastradas() {
return listaNotificacaoCadastradas;
}
public void setListaNotificacaoCadastradas(DataModel<Notificacao> listaNotificacaoCadastradas) {
this.listaNotificacaoCadastradas = listaNotificacaoCadastradas;
}
public FacesMessage getDlgNotificacao() {
return dlgNotificacao;
}
public void setDlgNotificacao(FacesMessage dlgNotificacao) {
this.dlgNotificacao = dlgNotificacao;
}
//Exibe página cadastro notificação
public String prepararAdicionarNotificacao(){
eventBus = EventBusFactory.getDefault().eventBus();
limpa();
return "/paginaNotificacao/cadastrarNotificacao.xhtml";
}
//Exibe página notificação
public String prepararExibeNotificacao(){
limpa();
return "/paginaNotificacao/exibeNotificacao.xhtml";
}
public void limpa() {
listaNotificacao.clear();
detail = null;
init();
}
//Gravar dados
public void adicionarNotificacao(){
try{
notificacao = new Notificacao();
NotificacaoDao dao = new NotificacaoDaoImp();
notificacao.setMensagem(detail);
summary = "Aviso";
dao.grava(notificacao);
dlgNotificacao = new FacesMessage(FacesMessage.SEVERITY_INFO, "Gravado com sucesso.","");
FacesContext.getCurrentInstance().addMessage(null, dlgNotificacao);
}finally{
notificacao.limpaValores();
limpa();
agregar();
}
}
public void agregar() {
notificarPush();
}
public void notificarPush() {
eventBus.publish(CHANNEL, new FacesMessage(StringEscapeUtils.escapeHtml(summary), StringEscapeUtils.escapeHtml(detail)));
}
}Antonio Filho
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)