[RESOLVIDO] Projeto JSF com Hibernate e Maven View Nao Seta Atributos No Modelo

Pessoal, boa tarde, estou com problema no meu projeto e já identifiquei qual é, minha login.xhtml nao esta atribuindo valores aos Seters da classe Usuario Modelo. Quando seto manualmente (usuario.setSenha(“123”), usuario.setUsername(“teste”) os valores são inseridos no banco normalmente, mas quando digitados nos campos da View não…

ERRO:
Caused by: javax.validation.ConstraintViolationException: Validation failed for classes [br.com.sitecarpal.model.Usuario] during persist time for groups [javax.validation.groups.Default, ]
List of constraint violations:[
ConstraintViolationImpl{interpolatedMessage=‘Não pode estar vazio’, propertyPath=senha, rootBeanClass=class br.com.sitecarpal.model.Usuario, messageTemplate=’{org.hibernate.validator.constraints.NotEmpty.message}’}
ConstraintViolationImpl{interpolatedMessage=‘Não pode estar vazio’, propertyPath=username, rootBeanClass=class br.com.sitecarpal.model.Usuario, messageTemplate=’{org.hibernate.validator.constraints.NotEmpty.message}’}
]

--------------------------VIEW-----------------------------------

<ui:composition template="/WEB-INF/templates/Layout.xhtml"
	xmlns="http://www.w3.org/1999/xhtml"
	xmlns:h="http://xmlns.jcp.org/jsf/html"
	xmlns:f="http://xmlns.jcp.org/jsf/core"
	xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
	xmlns:p="http://primefaces.org/ui">
	
	<ui:define name="login">    	
		<h:form>	
			<p:commandButton value="Criar Conta" type="button" onclick="PF('dlg2').show();"/>
			<p:dialog header="Criar Conta" widgetVar="dlg2" modal="true" height="500" id="NewUserDialog">
			    <h:outputText value="Após criar sua conta, uma solicitação será enviada ao Administrador para ativa-la." />
			    <p:messages id="messages" showDetail="true" autoUpdate="true" />
			    <h:panelGrid columns="2" id="matchGrid" cellpadding="5">      
			    	
			    	<h:outputLabel for="user-name" value="Nome de Usuario: "/>
			       	<h:inputText id="user-name" value="#{loginBean.userInfo.username}" required="true"/>
			                 
			        <h:outputLabel for="pwd1" value="Senha: *" />
			        <p:inputText id="pwd1" value="#{loginBean.userInfo.senha}" required="true" />

			        <p:commandButton value="Salvar" action="#{loginBean.salvar}" />
			    </h:panelGrid>			    
			</p:dialog> 					
		</h:form>
	</ui:define>
</ui:composition>

------------------------------CONTROLER BEAN--------------------

@ManagedBean
@Named(value="loginBean")
@ViewScoped
public class LoginBean implements Serializable{
	
	private static final long serialVersionUID = 1L;
	
	@Inject
	private UsuariosPU usuariosPU;	
	
	@Inject
	private UsuarioService usuarioService;
	
	@Inject
	private FacesMessages messages;
	
	private Usuario userInfo = new Usuario();


	public void prepareNewUser(){
		userInfo = new Usuario();
	}
	
	public void salvar(){
		usuarioService.saveNewUser(userInfo);
		messages.info("SALVO COM SUCESSO");
		RequestContext.getCurrentInstance();
	}
	
	public Usuario getUserInfo() {
		return userInfo;
	}

	public void setUserInfo(Usuario userInfo) {
		this.userInfo = userInfo;
	}
}

----------------MODELO-------

@Entity
public class Usuario implements Serializable {
	
	private static final long serialVersionUID = 1L;
	
	@Id
	@Column(name="id")
	@GeneratedValue
	private Long id;
	
	@NotEmpty
	@Column(name= "username", nullable = false, length = 12)
	private String username;
	
	@NotEmpty
	@Column(name = "senha", nullable = false, length = 16)
	private String senha;


	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getSenha() {
		return senha;
	}

	public void setSenha(String senha) {
		this.senha = senha;
	}	
	
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((id == null) ? 0 : id.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Usuario other = (Usuario) obj;
		if (id == null) {
			if (other.id != null)
				return false;
		} else if (!id.equals(other.id))
			return false;
		return true;
	}	
	
}

-----------------------Persistence Unit-----------------------

    package br.com.sitecarpal.repository;

    import java.io.Serializable;

    import javax.inject.Inject;
    import javax.persistence.EntityManager;

    import br.com.sitecarpal.model.Usuario;

    public class UsuariosPU implements Serializable {
    	
    	private static final long serialVersionUID = 1L;
    	
    	@Inject
    	private EntityManager manager;
    	
    	public Usuario porId(Long id) {
    		return manager.find(Usuario.class, id);
    	}	
    	
    	public Usuario saveBD(Usuario usuario){
    		return manager.merge(usuario);
    	}
    }

--------------------SERVICE-----------------------------------

package br.com.sitecarpal.service;

import java.io.Serializable;

import javax.inject.Inject;

import br.com.sitecarpal.model.Usuario;
import br.com.sitecarpal.repository.UsuariosPU;
import br.com.sitecarpal.util.Transacional;

public class UsuarioService implements Serializable{

private static final long serialVersionUID = 1L;

@Inject
private UsuariosPU usuarios;

@Transacional
public void saveNewUser(Usuario usuario){
usuarios.saveBD(usuario);
}

}

Desde já agradeço e Muito!

Provavelmente seja algum problema em uma das etapas do ciclo de vida anteriores ao envio dos dados para o managed bean. Alguma validação incorreta ou a tentativa de transformar algo em um objeto sem o uso de um converter.

RESOLVIDO !!!

Pessoal o problema foi solucionado substituindo
@ViewScoped
@Named(value=“loginBean”)
public class LoginBean implements Serializable{

por

@RequestScoped
@Named(value="loginBean")
public class LoginBean implements Serializable{

Considerações
ViewScoped
A cada requisição, os dados do ManagedBean serão mantidos na memória se o usuário
permanecer na mesma página que foi requisitada inicialmente. Como minha pagina é renderizada uma segunda vez quando mudo para a aba “Login” ele descarta os dados da memoria…

RequestScoped
A cada requisição, uma nova instância do ManagedBean será criada e usada. Desse modo,
não há o compartilhamento das informações do ManagedBean entre as requisições. No meu caso quando troco para a aba “Login” ele cria uma nova requisição ao servidor com os dados recém adicionados á memoria.

Obrigado pela atenção