Mudar cor do input na validação

1 resposta
C

Olá pessoal estou com uma dúvida. Tenho um validator para e-mail, e queria que o input mudasse de cor caso o valor passado não fosse um valor válido, e quando executo é lançada uma nullpointexception, alguém poderia me dizer porquê?

public class validatorEmail implements Validator {

	@Override
	public void validate(FacesContext context, UIComponent component,Object valorTela) throws ValidatorException {
		FacesMessage message = new FacesMessage();
		if (String.valueOf(valorTela).indexOf('@') == -1) {
			((UIInput) component).setValid(false);
			
			
			UIViewRoot viewRoot = context.getViewRoot();  
			HtmlInputText input = new HtmlInputText();
			input = (HtmlInputText)viewRoot.findComponent("txt_email");
			input.).setStyle("border-color: red;border-style: solid;height: 15px;font-size: 11px;border-width:1px;color: #BDD6FF;background-color:#FFEBDA;");
			
			throw new ValidatorException(message);
		}
		

	}


//No meu xhtml

                        <h:outputText styleClass="rotulo" value="E-mail" />
		<h:inputText styleClass="input_text" id="txt_email"
			value="#{MBusuarios.usuarios.cpf.EMail}" size="30" >
			<f:validator validatorId="validator.validatorEmail" />
			<a4j:support event="onchange" reRender="txt_email"
				limitToList="true" />
		</h:inputText>



// a exception lançada

oot cause

java.lang.NullPointerException
	validators.validatorEmail.validate(validatorEmail.java:28)
	org.richfaces.component.html.HtmlInputText.validateValue(HtmlInputText.java:52)
	javax.faces.component.UIInput.validate(UIInput.java:875)
	javax.faces.component.UIInput.executeValidate(UIInput.java:1072)
	javax.faces.component.UIInput.processValidators(UIInput.java:672)
	javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1058)
	javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1058)
	org.ajax4jsf.component.UIInclude.processValidators(UIInclude.java:207)
	javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1058)
	javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1058)
	org.ajax4jsf.component.UIAjaxForm.processValidators(UIAjaxForm.java:80)
	org.ajax4jsf.component.AjaxViewRoot$3.invokeContextCallback(AjaxViewRoot.java:442)
	org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:235)
	org.ajax4jsf.component.AjaxViewRoot.processValidators(AjaxViewRoot.java:458)
	com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:76)
	com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
	com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
	org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
	org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
	org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
	org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)

1 Resposta

ftabah

Favor apontar quais são as linhas abaixo:

[b]validators.validatorEmail.validate(validatorEmail.java:28 )

org.richfaces.component.html.HtmlInputText.validateValue(HtmlInputText.java:52) [/b]

Feito isso, mostre o contexto de ambas as linhas.

Null pointer normalmente está associado com alguma instanciação que não foi feita.
Isso quer dizer que pode ter faltado declarar uma variável ou associar por injeção de dependência algum service ou coisa parecida.

Criado 23 de maio de 2010
Ultima resposta 24 de mai. de 2010
Respostas 1
Participantes 2