I'm trying to validate a simple form in JSP with Spring and Hibernate using HibernateValidator. The JSP page Temp.jsp is as follows (the url pttern in web.xml is `*.htm`).

<%@page contentType="text/html" pageEncoding="UTF-8" %>
    <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <%@taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
 
    <form:form method="post" action="Temp.htm" commandName="validationForm">
         <!--validationForm is a model class-->
    <table>
        <tr>
            <td>User Name:<font color="red"><form:errors path="userName" /></font></td>
        </tr>
 
        <tr>
            <td><form:input path="userName" /></td>
        </tr>
 
        <tr>
            <td>Age:<font color="red"><form:errors path="age" /></font></td>
        </tr>
 
        <tr>
            <td><form:input path="age" /></td>
        </tr>
 
        <tr>
            <td>Password:<font color="red"><form:errors path="password" /></font></td>
        </tr>
 
        <tr>
 
        <td><form:password path="password" /></td>
 
        </tr>
 
        <tr>
            <td><input type="submit" value="Submit" /></td>
        </tr>
        </table>
 
    </form:form>
The class `validationForm` is as follows.

package validators;
 
    import javax.validation.constraints.Max;
    import javax.validation.constraints.Min;
    import javax.validation.constraints.NotNull;
    import javax.validation.constraints.Size;
    import org.hibernate.validator.constraints.NotEmpty;
    import org.springframework.format.annotation.NumberFormat;
    import org.springframework.format.annotation.NumberFormat.Style;
 
    final public class ValidationForm
    {
        @NotEmpty
        @Size(min = 1, max = 20)
        private String userName;
        @NotNull
        @NumberFormat(style = Style.NUMBER)
        @Min(1)
        @Max(110)
        private Integer age;
        @NotEmpty(message = "Password must not be blank.")
        @Size(min = 1, max = 10, message = "Password must between 1 to 10 Characters.")
        private String password;
 
        public void setUserName(String userName)
        {
                this.userName = userName;
        }
 
        public String getUserName()
        {
                return userName;
        }
 
        public void setAge(Integer age)
        {
                this.age = age;
        }
 
        public Integer getAge()
        {
                return age;
        }
 
        public void setPassword(String password)
        {
                this.password = password;
        }
 
        public String getPassword()
        {
                return password;
        }
    }

and the `Controller` class where the validation should be processed is as follows (I'm using `SimpleFormController`).

package controller;
 
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import org.springframework.validation.BindException;
    import org.springframework.web.servlet.ModelAndView;
    import org.springframework.web.servlet.mvc.SimpleFormController;
    import usebeans.TempService;
    import validators.ValidationForm;
 
    @SuppressWarnings("deprecation")
    final public class Temp extends SimpleFormController 
    {
        private TempService tempService=null;
        public Temp()
        {
            //setCommandClass(Temp.class);
            //setSuccessView("Temp");
            //setFormView("Temp");
 
            setCommandClass(ValidationForm.class); //Still not working.
            setCommandName("validationForm");
        }   
 
        public void setTempService(TempService tempService)
        {
            this.tempService = tempService;
        }
 
        @Override
        protected ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response, Object command, BindException errors) throws Exception
        {
            ModelAndView mv=new ModelAndView();
            ValidationForm validationForm=(ValidationForm) command;
            tempService.add(validationForm);
            return mv;
        }
 
        @Override
        protected ModelAndView showForm(HttpServletRequest request, HttpServletResponse response, BindException errors) throws Exception
        {
            ModelAndView mv=new ModelAndView();
            return mv;
        }
    }
In `dispatcher-servlet`, I have added the following.

<bean id="tempService" class="usebeans.TempServiceImpl" />
    <bean name="/Temp.htm" class="controller.Temp" p:tempService-ref="tempService" p:formView="Temp" p:successView="Temp" />

Also tried adding the following bean still there is no luck.

<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>

Where the `TempService` interface is as follows.

package usebeans;
 
    import validators.ValidationForm;
 
    public interface  TempService
    {
        public void add(ValidationForm validationForm);
    }

and following is the `TempServiceImpl` class.

package usebeans;
 
    import validators.ValidationForm;
 
    final public class TempServiceImpl implements TempService
    {
        public void add(ValidationForm validationForm)
        {
            System.out.println("Message");
        }
    }

Although the class `TempServiceImpl` implements the `TempService` interface, I'm getting the following exception.

javax.servlet.ServletException: No adapter for handler [usebeans.TempServiceImpl@ab3cba]: Does your handler implement a supported interface like Controller?
    at org.springframework.web.servlet.DispatcherServlet.getHandlerAdapter(DispatcherServlet.java:982)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:770)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
    at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:859)
    at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)
    at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1555)
    at java.lang.Thread.run(Thread.java:619)

Although I'm following what is explained here, the problem remains and I'm getting the same exception as mentioned above. What configuration settings am I missing here. It may be in the `dispatcher-servlet.xml` file. The entire `dispatcher-servlet.xml` file is as follows.

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:p="http://www.springframework.org/schema/p"
           xmlns:aop="http://www.springframework.org/schema/aop"
 
           xmlns:tx="http://www.springframework.org/schema/tx"
           xmlns:context="http://www.springframework.org/schema/context"
 
           xmlns:mvc="http://www.springframework.org/schema/mvc"
           xsi:schemaLocation="http://www.springframework.org/schema/beans [url]http://www.springframework.org/schema/beans/spring-beans-3.0.xsd[/url]
           [url=http://www.springframework.org/schema/aop]Index of /schema/aop[/url] [url]http://www.springframework.org/schema/aop/spring-aop-3.0.xsd[/url]
           [url=http://www.springframework.org/schema/tx]Index of /schema/tx[/url] [url]http://www.springframework.org/schema/tx/spring-tx-3.0.xsd[/url]
           [url=http://www.springframework.org/schema/context]Index of /schema/context[/url] [url]http://www.springframework.org/schema/context/spring-context-3.0.xsd[/url]
           [url=http://www.springframework.org/schema/mvc]Index of /schema/mvc[/url] http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
 
            <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/>    
            <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />
 
 
            <bean id="tempService" class="usebeans.TempServiceImpl" />
            <bean name="/Temp.htm" class="controller.Temp" p:tempService-ref="tempService" p:formView="Temp" p:successView="Temp" />
 
 
            <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
                <property name="mappings">
                    <props>
                        <prop key="index.htm">indexController</prop>                
                        <prop key="Temp.htm">tempService</prop>                
                    </props>
                </property>
            </bean>
 
            <bean id="viewResolver"
                  class="org.springframework.web.servlet.view.InternalResourceViewResolver"
                  p:prefix="/WEB-INF/jsp/"
                  p:suffix=".jsp" />
 
            <!--
            The index controller.
            -->
            <bean name="indexController"
                  class="org.springframework.web.servlet.mvc.ParameterizableViewController"
                  p:viewName="index" />
 
    </beans>

I don't have any precise idea about that exception being thrown. Can you figure it out why is that exception being thrown? What configuration settings or something else am I missing here?