Erro UIMESSAGE no JSF

0 respostas
G

To seguindo um exercicio de cadastro do livro “programaão java para web”, porem quando tento salvar o formulário, da a mensagem de erro de validação, mesmo com todos os campos corretos,e no console aparece o erro "GRAVE: Attribute ‘for’ of UIMessage must not be null. Pesquisei sobre ele e vi que se refere sobre mensagem do FaceContext, tentei tirar a parte do código que usava ele, mas continuo dando erro, agora não sei como agir para solucionar

o formulario

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"	
	
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core">


<h:head>
	<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
	<title> Cadastro de usuarios</title>
</h:head>
<h:body>
	<h1>Cadastro de usuarios</h1>
	<h:form id="cadastro">
		<h:message/>
		<h:inputHidden value="#{usuarioBean.usuario.codigo}" />
		<h:inputHidden value="#{usuarioBean.usuario.ativo}" />
		
		<h:panelGrid columns="2">
			<h:outputLabel value="Nome:" for="nome"/>
			<h:inputText id="nome" label="nome" value="#{usuarioBean.usuario.nome}" size="30" maxlength="30" required="true" requiredMessage="Você não tem nome?">
				<f:validateLength minimum="10" maximum="30"/>
			</h:inputText>
		
			<h:outputLabel value="Data de nascimento:" for="data" />
			<h:inputText id="data" label="Data de Nascimento" value="#{usuarioBean.usuario.nascimento}" size="10" maxlength="10" required="true">
				<f:convertDateTime dateStyle="medium"/>
			</h:inputText>
			
			<h:outputLabel value="Celular:" for="celular"/>
			<h:inputText id="celular" label="Celular" value="#{usuarioBean.usuario.celular}" size="10" />
			
			<h:outputLabel value="Email:" for="email"/>
			<h:panelGroup>
				<h:inputText id="email"
					label="e-mail"
					value="#{usuarioBean.usuario.email}"
					size="50" maxlength="50" required="true"
					validatorMessage="email inválido" >
					<f:validateRegex pattern="[a-zaA-Z0-9\-\_\.]+@[a-zA-Z0-9\-\_\.]+" />
					</h:inputText>	
					<h:message for="email"/>
			</h:panelGroup>
			
			<h:outputLabel value="Idioma:" for="idioma" />
			<h:selectOneMenu id="idioma" value="#{usuarioBean.usuario.idioma}">
				<f:selectItem itemValue="pt_BR" itemLabel="Português"/>
				<f:selectItem itemValue="en_US" itemLabel="English"/>
				<f:selectItem itemValue="es_ES" itemLabel="Espanol"/>
			</h:selectOneMenu>
			
			<h:outputLabel value="Login:" for="login"/>
			<h:inputText id="login"
				label="Login"
				value="#{usuarioBean.usuario.login}"
				size="15" maxlenght="15" required="true"
				validatorMessage="Login deve ter no minimo 5 e no maximo 15 caracteres e só pode ter os simbolos '.' e '_'" >
					
			</h:inputText>
			
			<h:outputLabel value="Senha:" for="senha" />
			<h:inputSecret id="senha" label="Senha" value="#{usuarioBean.usuario.senha}" size="10" maxLength="10" required="true" redisplay="true" />
			
			<h:outputLabel value="Confirmar senha:" for="confirmaSenha" />
			<h:inputSecret id="confirmaSenha" label="Confirma senha" value="#{usuarioBean.confirmaSenha}" size="10" maxLength="10" required="true" redisplay="true" />
			
		
		</h:panelGrid>
		
		<h:commandButton action="#{usuarioBean.salvar}" value="Salvar"/>
	</h:form>
</h:body>
</html>

o bean

package financeiro.web;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;

import financeiro.usuario.Usuario;
import financeiro.usuario.UsuarioRN;

@ManagedBean(name = "usuarioBean")
@RequestScoped
public class UsuarioBean {
	private Usuario usuario = new Usuario();
	private String confirmaSenha;
	
	public String novo() {
		this.usuario = new Usuario();
		this.usuario.setAtivo(true);
		return "usuario";
	}
	
	public String salvar(){
		
		FacesContext context = FacesContext.getCurrentInstance();
		
		String senha = this.usuario.getSenha();
		
		if(!senha.equals(this.confirmaSenha)){
			FacesMessage facesMessage = new FacesMessage("A senha não foi confimada corretamente");
			context.addMessage(null, facesMessage);
			return null;
		}
		
		UsuarioRN usuarioRN = new UsuarioRN();
		usuarioRN.salvar(this.usuario);
	
		return "usuarioSucesso";
	
	}

	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	public String getConfirmaSenha() {
		return confirmaSenha;
	}

	public void setConfirmaSenha(String confirmaSenha) {
		this.confirmaSenha = confirmaSenha;
	}

}
Criado 8 de março de 2012
Respostas 0
Participantes 1