Metodo para retornar uma mensagen no JSF

6 respostas
S

Bom dia pessoal, algume poderia me dar uma ajuda sobre criar um metodo para exibir uma mensagem de erro para o usuario.
tipo no caso de ele não preencher um certo campo.

public void validaJustificativa(FacesContext context, UIComponent component, Object object) {
    	String justificativa = object.toString();
    	

		if(justificativa == null) {
			//throw new ValidatorException(new FacesMessage("invalido"));
			((UIInput) component).setValid(false);
			FacesMessage message = new FacesMessage("campo obrigatorio");
			context.addMessage(component.getClientId(context), message);
		}
    }

6 Respostas

euprogramador

Cara, primeiro a validação de campos do formulário deve ficar no form e não no código, regras mais complexas ficam no código, eu uso assim:

FacesMessages.instance().add(FacesMessage.SEVERITY_ERROR,"MSGERRO");
S

Amigo onde eu coloco isso ai? no metodo que o commandButton chama?

euprogramador

Sim,

por exemplo você tem o seguinte código de managed Bean

public class ClientesMB {

	Cliente cliente;
	RepositorioCliente clientes;

	public void salvar() {
		if ("".equals(cliente.getNome())) {
			FacesMessages.instance().add(FacesMessage.SEVERITY_ERROR, "Preencha o nome do cliente");
			return;
		}

		repositorioClientes.salvar(cliente);
	}
}

você validou que o nome tem de ser preenchido senão não salva entende?

S

Voce quem criou essa FaceMessages? porque eu chamo fala que não existe.

euprogramador

desculpe, é que uso o seam e ele faz o tratamento de mensagens, para JSF puro faz assim

FacesContext.getCurrentInstance().addMessage("iddocampojsf", new FacesMessage(FacesMessage.SEVERITY_ERROR, "sumário da mensagem", "detalhe da mensagem"));

usa isto no lugar do

FacesMessages.instance().add(FacesMessage.SEVERITY_ERROR, "Preencha o nome do cliente");
S

Ai estou tentando aqui mais da essa mensagem

justificativa: Validation Error: Value is less than allowable minimum of ‘15’

esse é o codigo do jsf

<h:inputTextarea id = "just" value="#{MBNF.justificativaCanc}" cols="100" rows="4" required="true" styleClass="edit" >
	                                            <f:validateLength minimum="15" />
	                                            </h:inputTextarea>
	                                            <rich:message for = "just" styleClass="mensagemErroSemImagem"  />

agora esse é o codigo da minha class

public String cancelarNota() {
        try {
        	if(getJustificativaCanc().length() < 15){
        		FacesContext.getCurrentInstance().addMessage
        		("just", new FacesMessage(FacesMessage.SEVERITY_ERROR,"alguma coisa","lala"));
        		return null;
        	} else {
	            nf.setUsuarioCancelamento(getUsuarioConectado());
	            nf.setJustificativaCancelamento(getJustificativaCanc());
	            processarCancelamento.cancelaNota(nf);
	            
	            return ("listaNotasSaida");
        	}
        } catch (Exception me) {
            me.printStackTrace();
        }
        return null;
    }
Criado 28 de setembro de 2009
Ultima resposta 28 de set. de 2009
Respostas 6
Participantes 2