Good afternoon! I'm having problems with an xhtml form made in JSF, as it is not setting the values in UserBean, and when I run the register method () in the UserBean class, eclipse returns an error of type NullPointException. Follow the registration.xhtml and the User.be.class:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://xmlns.jcp.org/jsf/core">
<h:form id="cadastro">
<p:growl id="growl" showDetail="true" sticky="true" />
<h:head>
<title>KArtHugo PCs</title>
</h:head>
<!-- <marquee scrollamount="40">
<h1 style="font-size: 100px; color: blue; text-align: left;">Monta
ai comedia</h1>
<h:graphicImage url="/images/pc.jpg" />
</marquee> -->
<h:body>
<p:panel header="Cadastro">
<p:panelGrid columns="2">
<p:outputLabel value="Nome completo: " for="nome" />
<p:inputText value="#{usuarioBean.entidade.nome}" required="true"
id="nome" />
<p:outputLabel value="Username: " for="nick" />
<p:inputText value="#{usuarioBean.entidade.username}" required="true"
id="nick" />
<p:outputLabel value="Email: " for="email" />
<p:inputText value="#{usuarioBean.entidade.email}" id="email"
required="true" />
<p:outputLabel value="Senha: " for="password" />
<p:password required="true" feedback="true"
value="#{usuarioBean.entidade.password}" id="password" />
<p:outputLabel value="Confirme a senha: " for="autPass" />
<p:password required="true" id="autPass"
value="#{usuarioBean.autPassword}" />
<p:column>
<p:commandButton value="Salvar cadastro" id="btnCadastro"
action="#{usuarioBean.cadastro()}" update="growl" />
</p:column>
</p:panelGrid>
</p:panel>
</h:body>
</h:form>
</html>
UserBean class:
package beans;
@ApplicationScoped @Named public class UserBean implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@Inject
private UserService service;
private String autPassword;
private Usuario entidade;
protected Collection<Usuario> entidades;
public UsuarioBean() {
}
@PostConstruct
public void init() {
limpar();
}
public void cadastro() {
entidades = service.getAll();
boolean pass = false;
if (!entidade.getPassword().equals(autPassword)) {
FacesContext.getCurrentInstance().addMessage("ERROR", new FacesMessage("Confira sua senha!"));
} else {
pass = true;
}
boolean unique = false;
for (Usuario u : entidades) {
if (entidade.getEmail().equals(u.getEmail())) {
FacesContext.getCurrentInstance().addMessage("ERROR", new FacesMessage("Email já cadastrado"));
} else {
unique = true;
}
}
if (pass && unique) {
entidade.setPassword(service.hash(entidade.getPassword()));
entidade.setGrupo("USER");
service.save(entidade);
limpar();
try {
FacesContext.getCurrentInstance().getExternalContext().redirect("index.xhtml");
FacesContext.getCurrentInstance().addMessage("Sucesso!",
new FacesMessage("Usuario " + entidade.getNome() + " cadastrado!"));
} catch (IOException e) {
e.printStackTrace();
}
}
}
public String getUserLogin() {
FacesContext facesContext = FacesContext.getCurrentInstance();
ExternalContext externalContext = facesContext.getExternalContext();
Principal userPrincipal = externalContext.getUserPrincipal();
if (userPrincipal == null) {
return "";
}
return userPrincipal.getName();
}
public boolean userLogged() {
FacesContext facesContext = FacesContext.getCurrentInstance();
ExternalContext externalContext = facesContext.getExternalContext();
Principal principal = externalContext.getUserPrincipal();
if (principal == null) {
return false;
} else {
return true;
}
}
public void efetuarLogout() throws IOException, ServletException {
FacesContext fc = FacesContext.getCurrentInstance();
ExternalContext ec = fc.getExternalContext();
HttpSession session = (HttpSession) ec.getSession(false);
session.invalidate();
HttpServletRequest request = (HttpServletRequest) ec.getRequest();
request.logout();
ec.redirect(ec.getApplicationContextPath());
}
public boolean isUserInRole(String role) {
FacesContext facesContext = FacesContext.getCurrentInstance();
ExternalContext externalContext = facesContext.getExternalContext();
return externalContext.isUserInRole(role);
}
public void remove(Usuario entidade) {
getService().remove(entidade);
limpar();
}
public Usuario getEntidade() {
return entidade;
}
public void setEntidade(Usuario entidade) {
this.entidade = entidade;
}
public Collection<Usuario> getEntidades() {
return entidades;
}
public void setEntidades(Collection<Usuario> entidades) {
this.entidades = entidades;
}
public void save() {
getService().save(entidade);
limpar();
}
public void limpar() {
entidades = getService().getAll();
entidade = new Usuario();
}
public UserService getService() {
return service;
}
public String getAutPassword() {
return autPassword;
}
public void setAutPassword(String autPassword) {
this.autPassword = autPassword;
}
}