Problema com JSF... (FacesMessage)

Bem esse é meu código:
cadastrarUsuario.jsp :

[code]<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>
<%@ taglib prefix=“f” uri=“http://java.sun.com/jsf/core”%>
<%@ taglib prefix=“h” uri=“http://java.sun.com/jsf/html”%>

.:Cadastro Usuario:.
		<h:panelGrid columns="2">
			<f:facet name="header">
				<h:outputText value="Dados para cadastro" />
			</f:facet>
			<h:outputText value="Nome:" />
			<h:panelGroup>
				<h:inputText id="nome" value="#{cadastroUsuarioBean.nome}" />
				<h:message for="nome" />
			</h:panelGroup>
			<h:outputText id="email" value="E-mail:" />
			<h:panelGroup>
				<h:inputText size="40" maxlength="250"
					value="#{cadastroUsuarioBean.email}" />
				<h:message for="email" />
			</h:panelGroup>
			<h:outputText value="Senha:" />
			<h:panelGroup>
				<h:inputSecret id="senha" size="20"
					value="#{cadastroUsuarioBean.senha}" />
				<h:message for="senha" />
			</h:panelGroup>
			<h:outputText />
			<h:commandButton id="cadastrar" value="Cadastrar"
				actionListener="#{cadastroUsuarioBean.cadastrar}" />
		</h:panelGrid>

	</h:form>
</body>

</f:view>

[/code]

CadastrarUsuario.java :

[code]package com.algaworks.dwjsf.visao;

import java.util.Calendar;

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;

public class CadastroUsuario {
private String nome;
private String email;
private String senha;

public void cadastrar(ActionEvent event) {
	FacesContext context = FacesContext.getCurrentInstance();
	if (this.getNome() != null && this.getNome().length() < 10) {
	context.addMessage("frm:nome",
			new FacesMessage(FacesMessage.SEVERITY_WARN,
					"Nome inválido!","Digite nome completo."));
					}
	if (Calendar.getInstance().get(Calendar.DAY_OF_WEEK)== Calendar.THURSDAY) {
	context.addMessage(null,
			new FacesMessage(FacesMessage.SEVERITY_WARN,
					"Dia da semana inválido!","Você não pode cadastrar usuários na quinta."));
	}
}	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 getSenha() {
	return senha;
}

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

}[/code]

Quando o usuário tenta cadastrar em um dia improprio (eu coloquei no programa quinta pra testar) é para aparecer uma mensagemdizendo que não pode cadastrar o usuário nesse dia, ESSA MENSAGEM APARECE NORMAL… (no topo)
Mais quando o usuário digita o nome incompleto( com menos de 10 caracteres ) é para aparecer uma mensagemao lado do campo dizendo para informa o nome completo e essa mensagem não aparece e gera um erro:

17/11/2011 14:20:35 com.sun.faces.lifecycle.RenderResponsePhase execute INFO: WARNING: FacesMessage(s) have been enqueued, but may not have been displayed. sourceId=frm:nome[severity=(WARN 1), summary=(Nome inválido!), detail=(Digite nome completo.)]

Como resolvo isso?

tenta colocar um <h:message for=“idDoSeucomponente”/>

e depois da um refresh nesse cara.

[quote=jakefrog]tenta colocar um <h:message for=“idDoSeucomponente”/>

e depois da um refresh nesse cara.[/quote]

Mais já tem um for:

<h:outputText value="Nome:" /> <h:panelGroup> <h:inputText id="nome" value="#{cadastroUsuarioBean.nome}" /> <h:message for="nome" /> </h:panelGroup>

Era aki mesmo para colocar o for que vc disse ou é em outro lugar?

Aí mesmo. Agora falta você fazer um update via ajax para atualizar esse cara e exibir o valor.

Como eu faço esse update via ajax?

progura no google a tag f:ajax. nele vc passa o id de quem vc quer alterar.

Eu nao sei de cabeça aqui

^^

[quote=jakefrog]progura no google a tag f:ajax. nele vc passa o id de quem vc quer alterar.

Eu nao sei de cabeça aqui

^^[/quote]

OK
Mais eu não entendi oq eu vou alterar… ><

com o ajax vc vai dar um update no message que tem o for.

Haa
OK
Qualquer duvida eu volto… :wink:

Cara eu não achei(ou não entendi) nada que mi ajuda-se a fazer isso que vc disse…

Olá,
Coloca o id do form.

<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<html>
<body>
	<f:view>
		<h:form id="frm">
			<h:messages layout="table" errorStyle="color: red"
				infoStyle="color: green" warnStyle="color: orange"
				fatalStyle="color: gray" showDetail="true" globalOnly="true" />
			<h:panelGrid columns="2">
				<f:facet name="header">
					<h:outputText value="Dados para cadastro" />
				</f:facet>
				<h:outputText value="Nome:" />
				<h:panelGroup>
					<h:inputText id="nome" value="#{cadastroUsuarioBean.nome}" />
					<h:message for="nome" />
				</h:panelGroup>
				<h:outputText id="email" value="E-mail:" />
				<h:panelGroup>
					<h:inputText size="40" maxlength="250"
						value="#{cadastroUsuarioBean.email}" />
					<h:message for="email" />
				</h:panelGroup>
				<h:outputText value="Senha:" />
				<h:panelGroup>
					<h:inputSecret id="senha" size="20"
						value="#{cadastroUsuarioBean.senha}" />
					<h:message for="senha" />
				</h:panelGroup>
				<h:outputText />
				<h:commandButton id="cadastrar" value="Cadastrar"
					actionListener="#{cadastroUsuarioBean.cadastrar}" />
			</h:panelGrid>
		</h:form>
	</f:view>
</body>
</html>

tenho uma duvida como coloco no FacesMessage a segunda mensagem
ex:
FacesMessage(FacesMessage.SEVERITY_ERROR,
“Conta invalida”, “Conta invalida,nao pode começar com zero”));
Eu quero que apareça a segunda mensagem que seria [color=red]“Conta invalida,nao pode começar com zero”[/color]