Erro pagina JSP...A literal value was specified for attribute validator that

Olá,

estou visualizando onde está dando erro ao fazer esse exemplo usando JSF 2.
Estou usando eclipse 3.6,java 6,tomcat 7

Se alguém puder me ajudar

abs


<faces-config>
    <managed-bean>
        <managed-bean-name>OlaMundo</managed-bean-name>
        <managed-bean-class>olamundo.OlaMundo</managed-bean-class>
        <managed-bean-scope>request</managed-bean-scope>
    </managed-bean>
    
    
    <navigation-rule>
        
        <from-view-id>/welcomeJSF.jsp</from-view-id>
        <navigation-case>
            <description>PrimeiraTela</description>
            <from-outcome>resultado</from-outcome>
            <to-view-id>/resultado.jsp</to-view-id>
        </navigation-case>
        
    </navigation-rule>
  
</faces-config>
import java.util.Date;

import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.event.ValueChangeEvent;
import javax.faces.validator.ValidatorException;

/**
 *
 * @author turma1
 */
public class OlaMundo {
    
    private String nome ;
    
    private Date dataNascimento;
    
    
    
    /** Creates a new instance of OlaMundo */
    public OlaMundo() {
    }
    
    public String getNome(){
        return nome;
    }
    public void setNome(String nome){
        this.nome = nome;
    }
    
    public String mostrarNome() {
        System.out.println("** Nome = "+nome);
        return "resultado";
    }
   
        
    public void validaNome(FacesContext arg0,UIComponent arg1,Object arg2) throws ValidatorException{
   
        String outroNome = (String) arg2;
        if (outroNome.length()<4){
            throw new ValidatorException(
                    new FacesMessage("Erro no tamanho do nome !!!")
                    );
        }
    }
    
    public void metodoEvento(ValueChangeEvent evento){
        System.out.println("Evento"+evento);
    }

    public Date getDataNascimento() {
        return dataNascimento;
    }

    public void setDataNascimento(Date dataNascimento) {
        this.dataNascimento = dataNascimento;
    }
    
    
}    
--welcomeJSF.jsp
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>

<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <f:view>
            <h1><h:outputText value="JavaServer Faces" /></h1>
            
              
            <h:form>

                 <h:outputText  value="Nome" />
                 
                 <h:inputText   value="#{OlaMundo.nome}" validator="#{OlaMundo.validaNome}" >    
                 </h:inputText>
                 
                 
                 <h:commandButton  value="Chamar metodo no MB" action="#{OlaMundo.mostrarNome}"/>
                 
                 <h:messages/>
            </h:form>
                
        </f:view>
      
    </body>
</html>
org.apache.jasper.JasperException: /welcomeJSF.jsp(24,17) A literal value was specified for attribute validator that is defined as a deferred method with a return type of void. JSP.2.3.4 does not permit literal values in this case
	at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
	at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
	at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:148)
	at org.apache.jasper.compiler.Validator$ValidateVisitor.checkXmlAttributes(Validator.java:1145)
	at org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:870)
	at org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1539)
	at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2376)
	at org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2428)
	at org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:889)
	at org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1539)
	at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2376)
	at org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2428)
	at org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:889)
	at org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1539)
	at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2376)
	at org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2428)
	at org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2434)
	at org.apache.jasper.compiler.Node$Root.accept(Node.java:475)
	at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2376)
	at org.apache.jasper.compiler.Validator.validateExDirectives(Validator.java:1789)
	at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:216)
	at org.apache.jasper.compiler.Compiler.compile(Compiler.java:365)
	at org.apache.jasper.compiler.Compiler.compile(Compiler.java:345)
	at org.apache.jasper.compiler.Compiler.compile(Compiler.java:332)
	at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:594)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:327)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:363)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:306)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
	at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:671)
	at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463)
	at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:402)
	at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:330)
	at com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:542)
	at com.sun.faces.application.view.JspViewHandlingStrategy.executePageToBuildView(JspViewHandlingStrategy.java:359)
	at com.sun.faces.application.view.JspViewHandlingStrategy.buildView(JspViewHandlingStrategy.java:150)
	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:96)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97)
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:135)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:309)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:203)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:108)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:379)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:242)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:259)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:237)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:281)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)