(RESOLVIDO)Bean Validation com Primefaces

Ola pessoal!Boa tarde!

Estou usando a especificação bean validation e notei que com primefaces as mensagens de validação não aparecem,primeiro gostaria de saber,é possível usar esse tipo de especificação com primefaces? E segundo,quais dependências corretas preciso utilizar.

Aqui está meu código Bean:

@Entity
public class Usuario implements Serializable {

	private static final long serialVersionUID = 1L;
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)	
	@Column(nullable=false,length=11)
	private Integer codigo;
	
    @NotEmpty()
	@Column(length=40,nullable=false)
    @Size(min=5,max=30)
	private String nome;
    
	@Email(message = "Email não pode ser nulo!")
	@Column(length=60,nullable=false)
	private String email;
	
	@NaturalId(mutable = true)
	@NotNull(message = "Login não pode ser nulo!")
	@Column(length=20,nullable=false)
	private String login;
	
	@NotNull(message = "Senha não pode ser nulo!")
	@Column(length=30,nullable=false)
	private String senha;
	
	@NotNull(message="Data não pode ser nulo!")
	@Column(nullable=false)
	@Temporal(TemporalType.TIMESTAMP)
	private Date nascimento;
	
	@NotEmpty(message = "Celular não pode ser nulo!")
	@Column(length=17,nullable=false)
	private String celular;
	
	@Column(length=10)
	private String idioma;
	
	private boolean ativo;
	
	@NotNull(message = "Empresa não pode ser nulo!")
	@Column(length=11,nullable=false)
	private Integer cod_empresa;
	
	@NotNull(message = "Unidade não pode ser nulo!")
	@Column(length=11,nullable=false)
	private Integer cod_unidade;
	
	@NotNull(message = "Filial não pode ser nulo!")
	@Column(length=11,nullable=false)
	private Integer cod_filial;

	@ElementCollection(targetClass = String.class)
	@JoinTable(

			name = "usuario_permissao", uniqueConstraints = { @UniqueConstraint(columnNames = { "usuario",
					"permissao" }) }, joinColumns = @JoinColumn(name = "usuario"))
	@Column(name = "permissao", length = 50)

	private Set<String> permissao = new HashSet<String>();

	public Integer getCodigo() {
		return codigo;
	}

	public void setCodigo(Integer codigo) {
		this.codigo = codigo;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public String getLogin() {
		return login;
	}

	public void setLogin(String login) {
		this.login = login;
	}

	public String getSenha() {
		return senha;
	}

	public void setSenha(String senha) {
		this.senha = senha;
	}

	public Date getNascimento() {
		return nascimento;
	}

	public void setNascimento(Date nascimento) {
		this.nascimento = nascimento;
	}

	public String getCelular() {
		return celular;
	}

	public void setCelular(String celular) {
		this.celular = celular;
	}

	public String getIdioma() {
		return idioma;
	}

	public void setIdioma(String idioma) {
		this.idioma = idioma;
	}

	public boolean isAtivo() {
		return ativo;
	}

	public void setAtivo(boolean ativo) {
		this.ativo = ativo;
	}

	public Integer getCod_empresa() {
		return cod_empresa;
	}

	public void setCod_empresa(Integer cod_empresa) {
		this.cod_empresa = cod_empresa;
	}

	public Integer getCod_unidade() {
		return cod_unidade;
	}

	public void setCod_unidade(Integer cod_unidade) {
		this.cod_unidade = cod_unidade;
	}

	public Integer getCod_filial() {
		return cod_filial;
	}

	public void setCod_filial(Integer cod_filial) {
		this.cod_filial = cod_filial;
	}

	public Set<String> getPermissao() {
		return permissao;
	}

	public void setPermissao(Set<String> permissao) {
		this.permissao = permissao;
	}

	public static long getSerialversionuid() {
		return serialVersionUID;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + (ativo ? 1231 : 1237);
		result = prime * result + ((celular == null) ? 0 : celular.hashCode());
		result = prime * result + ((cod_empresa == null) ? 0 : cod_empresa.hashCode());
		result = prime * result + ((cod_filial == null) ? 0 : cod_filial.hashCode());
		result = prime * result + ((cod_unidade == null) ? 0 : cod_unidade.hashCode());
		result = prime * result + ((codigo == null) ? 0 : codigo.hashCode());
		result = prime * result + ((email == null) ? 0 : email.hashCode());
		result = prime * result + ((idioma == null) ? 0 : idioma.hashCode());
		result = prime * result + ((login == null) ? 0 : login.hashCode());
		result = prime * result + ((nascimento == null) ? 0 : nascimento.hashCode());
		result = prime * result + ((nome == null) ? 0 : nome.hashCode());
		result = prime * result + ((permissao == null) ? 0 : permissao.hashCode());
		result = prime * result + ((senha == null) ? 0 : senha.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 (ativo != other.ativo)
			return false;
		if (celular == null) {
			if (other.celular != null)
				return false;
		} else if (!celular.equals(other.celular))
			return false;
		if (cod_empresa == null) {
			if (other.cod_empresa != null)
				return false;
		} else if (!cod_empresa.equals(other.cod_empresa))
			return false;
		if (cod_filial == null) {
			if (other.cod_filial != null)
				return false;
		} else if (!cod_filial.equals(other.cod_filial))
			return false;
		if (cod_unidade == null) {
			if (other.cod_unidade != null)
				return false;
		} else if (!cod_unidade.equals(other.cod_unidade))
			return false;
		if (codigo == null) {
			if (other.codigo != null)
				return false;
		} else if (!codigo.equals(other.codigo))
			return false;
		if (email == null) {
			if (other.email != null)
				return false;
		} else if (!email.equals(other.email))
			return false;
		if (idioma == null) {
			if (other.idioma != null)
				return false;
		} else if (!idioma.equals(other.idioma))
			return false;
		if (login == null) {
			if (other.login != null)
				return false;
		} else if (!login.equals(other.login))
			return false;
		if (nascimento == null) {
			if (other.nascimento != null)
				return false;
		} else if (!nascimento.equals(other.nascimento))
			return false;
		if (nome == null) {
			if (other.nome != null)
				return false;
		} else if (!nome.equals(other.nome))
			return false;
		if (permissao == null) {
			if (other.permissao != null)
				return false;
		} else if (!permissao.equals(other.permissao))
			return false;
		if (senha == null) {
			if (other.senha != null)
				return false;
		} else if (!senha.equals(other.senha))
			return false;
		return true;
	}

}

Pagina de visualização:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"   
      xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
      xmlns:f="http://xmlns.jcp.org/jsf/core"
      xmlns:h="http://xmlns.jcp.org/jsf/html"
      xmlns:p="http://primefaces.org/ui">
      
      
<h:head><title>Cadastro Usuário</title>

	<f:metadata>	    
 		<f:viewParam name = "id" value = "#{usuarioBean.usuarioSelecionado.codigo}"/>		     		
	</f:metadata>

</h:head> 
           
<ui:composition template="/template/interna.xhtml">

		<ui:define name="titulo">Cadastro Usuário</ui:define>

	<ui:define name="corpo">
	       	        
		      <p:messages/>
		         	  	                      
				<h:form id = "cadastroUsuario" >					
				
						<h:inputHidden value="#{usuarioBean.iniciar().codigo}" />
						<h:inputHidden value="#{usuarioBean.iniciar().ativo}" />
													
					<div class = "ui-fluid">
					
						<p:panelGrid columns="2" styleClass="ui-panelgrid-blank">
																					       					
					 <p:outputLabel value = "Nome:" for = "nome"/>	
								
									 <p:inputText value="#{usuarioBean.iniciar().nome}" 
									 									
									 size="30"
									 maxlength="30"									
									 id="nome"
									 label="Nome"
									 style="width:auto">
									 									
									</p:inputText> 
						
								<p:outputLabel value = "Data Nascimento:" for = "data"/>
								<p:inputMask id = "data" label ="Data de Nascimento" value = "#{usuarioBean.iniciar().nascimento}"
									size = "10"
									maxlength="10"								
									mask="99/99/9999"
									style="width:auto">
									<f:convertDateTime dateStyle="medium"/>
								</p:inputMask>
						
								<p:outputLabel value = "Celular:" for = "celular"/>
								<p:inputText 
								    id ="celular" 
								    label = "Celular" 
									value = "#{usuarioBean.iniciar().celular}"
									size = "17"
									maxlength="17"
									style = "width:auto">
								<f:convertNumber integerOnly="true" />
								<f:convertNumber pattern="#################" maxFractionDigits="0" />
									
									</p:inputText>							
						
								<p:outputLabel value = "Email:" for = "email"/>
								<h:panelGroup>
						
									<p:inputText id = "email"
										 label = "Email"
										 value="#{usuarioBean.iniciar().email}"
										 size = "50"
										 maxlength="50"										
										 validatorMessage="Email inválido"
										 style="width:auto">
										 	
									 </p:inputText>
									<p:message for="email"/>
														
								</h:panelGroup>
																						
								<p:outputLabel value="Empresa:"/>											
								<p:selectOneMenu style="width:110px" value="#{usuarioBean.usuario.cod_empresa}" id = "EmpresaId">
									
									<f:converter converterId="converterEmpresa" for = "EmpresaId"/>													
									<f:selectItem itemLabel="--Selecione--" noSelectionOption="true" itemDisabled="true"/>
									<f:selectItems value="#{empresaBean.listar()}" var="empresa" itemLabel="#{empresa.cod_empresa}" itemValue="#{empresa.cod_empresa}"/>										
							
								</p:selectOneMenu>
										
								<p:outputLabel value="Filial:"/>											
								<p:selectOneMenu style="width:110px" value="#{usuarioBean.usuario.cod_filial}" id="FilialId">
								
									<f:converter converterId="converterFilial" for="FilialId"/>							
									<f:selectItem itemLabel="--Selecione--" noSelectionOption="true" itemDisabled="true"/>
									<f:selectItems value="#{filialBean.listar()}" var="filial" itemLabel="#{filial.cod_filial}" itemValue="#{filial.cod_filial}"/>										
							
								</p:selectOneMenu>
								
								<p:outputLabel value="Unidade Negócio:"/>											
								<p:selectOneMenu style="width:110px" value="#{usuarioBean.usuario.cod_unidade}" id="UnidadeId">
									
									<f:converter converterId="converterUnidade" for="UnidadeId"/>																								
									<f:selectItem itemLabel="--Selecione--" noSelectionOption="true" itemDisabled="true"/>
									<f:selectItems value="#{unidadeNegocioBean.listar()}" var="unidade" itemLabel="#{unidade.cod_unidade}" itemValue="#{unidade.cod_unidade}"/>										
							
								</p:selectOneMenu> 
										
										
								<p:outputLabel value="Idioma:" for = "idioma"/>				
								<p:selectOneMenu id="idioma" value="#{usuarioBean.iniciar().idioma}" style="width:110px" >
									
									<f:selectItem itemLabel="--Selecione--" noSelectionOption="true"/> 
									<f:selectItem  itemValue="pt_BR" itemLabel="Portugues"/>
									<f:selectItem  itemValue="en_US" itemLabel="English"/>
									<f:selectItem  itemValue="es_ES" itemLabel="Espanhol"/>					
							
								</p:selectOneMenu>	
						
								<p:outputLabel value="Login:" for = "login" />
							
								<p:inputText label = "Login" value="#{usuarioBean.iniciar().login}"
									id = "login"
									size = "15"								
									style="width:auto"
									validator="#{usuarioBean.validarUsuario}">
																		
								</p:inputText>
								
								<p:outputLabel value="Senha:" for = "senha"/>			
								<p:password  value="#{usuarioBean.iniciar().senha}" 
									id = "senha" 
									label = "Senha"
									size = "10"																
									redisplay="true"
									rendered="#{usuarioBean.mostrarSenha() == false}"
									style="width:auto"
									/>
								
								<p:inputText value="#{usuarioBean.iniciar().senha}" rendered="#{usuarioBean.mostrarSenha()}" /> 								
						
								<p:outputLabel value="Confirmar Senha:" for = "confirmarsenha"/>
								<p:password value="#{usuarioBean.confirmarSenha}" 
									id = "confirmarsenha"
									label = "Confirmar Senha"
									size = "10"																
									redisplay = "true"
									style="width:auto"
									validator="#{usuarioBean.validarUsuario}"/>
																
								<p:commandButton action = "#{usuarioBean.salvar()}" value = "Salvar" id="salvar" >														
									<p:confirm header="Confirmation" message="Deseja realmente salvar?" icon="ui-icon-disk"/>
								</p:commandButton>	
								
								  <p:confirmDialog global="true" showEffect="fade" hideEffect="fade">
									<p:commandButton value="Yes" type="button" styleClass="ui-confirmdialog-yes" icon="ui-icon-check" />
									<p:commandButton value="No" type="button" styleClass="ui-confirmdialog-no" icon="ui-icon-close" />
								</p:confirmDialog>	
														
						</p:panelGrid>
										
			        </div>				
				
				</h:form>		
		  
	</ui:define>	
	
</ui:composition>
</html>

Patrick,

Faltou você colocar um componente de mensagem para a mensagem explodir na tela, então dentro do seu form coloque o componente:

<p:growl id=“growl” showDetail=“true” sticky=“true” />

E no botão que você for salvar coloque um update=“growl”

1 curtida

Bom dia Andre,muito obrigado mesmo,funcionou!!

Coloquei o componente de mensagens dentro do form e apareceu todas as mensagens :grin: