Validação, Conversão e estado do componente

3 respostas
C

Salve pessoal do GUJ, Boa Tarde!

Minhá dúvida deve ter uma resposta simples, porém já googlei em tudo que foi canto, sem sucesso.
Vamos lá! Como faço para alterar a cor de fundo e da borda de um componente input JSF na validação sem ser com JavaScript ou Ajax? Preciso que isso seja feito dentro do Validator/Converter!!! Teria que ser no meu código java de validalção/converção. Alguém pode me socorrer?

3 Respostas

R

meu amigo, vc pode fazer o seguinte:

1 - o objeto do input deve começar diferente de null, tipo se for um nome de contato ele deve iniciar “”
2 - ai vc cria dois estilos para o componente, css mesmo e lá no styleClass vc verifica, se ele for null é pq gerou uma excessão e vc mostra um estilo, caso contrario …

<h:inputText id="nomeOperador" value="#{acaoCliente.operador.nome}" maxlength="40" styleClass="#{acaoCliente.operador.nome == null ? 'obrigatorio' : 'ok' }" title="Nome do Operador" />

tenta isto ai

C

desculpe minha ignorância, mas como ficaria o código css? nunca fiz desta forma!!

C

Cara não funcionou, não. Fiz assim :
1: criei as duas classes css - ‘input_text_erro’ ‘input_text’

<h:inputText required="true" requiredMessage="#{msg.required}"
			id="txt_username_pf" [b]styleClass="#{MBusuarios.usuarios.username ==     null ? 'input_text_erro' : 'input_text' }"[/b]			value="#{MBusuarios.usuarios.username}">
			<f:validator validatorId="validator.validatorUsername" />
			<a4j:support event="onblur"
				reRender="txt_username_pf,msg_username_pf1,msg_username_pf2,painel" limitToList="true" />
		</h:inputText>

// meu validator

public class validatorUsername implements Validator {

	@Override
	public void validate(FacesContext context, UIComponent component,
			Object valorTela) throws ValidatorException {
		FacesMessage message = new FacesMessage();
		UsuariosDao dao = new UsuariosDao();
			
		if (dao.findByUsername(String.valueOf(valorTela)) != null) {
				           
			((UIInput) component).setValid(false);
			message.setSeverity(FacesMessage.SEVERITY_ERROR);
			message.setDetail(ResourceBundle.getBundle(
					FacesContext.getCurrentInstance().getApplication()
							.getMessageBundle()).getString(
					"erro.validacao.username"));
			message.setSummary(ResourceBundle.getBundle(
					FacesContext.getCurrentInstance().getApplication()
							.getMessageBundle()).getString(
					"erro.validacao.username"));
			
			throw new ValidatorException(message);
		} else {
			((UIInput) component).setValid(true);
			
		}

	}

}
Criado 8 de novembro de 2010
Ultima resposta 8 de nov. de 2010
Respostas 3
Participantes 2