Исключение: «Нет адаптера для обработчика. Реализует ли ваш обработчик поддерживаемый интерфейс, такой как контроллер?»

Я пытаюсь проверить простую форму в JSP с помощью Spring и Hibernate, используя HibernateValidator. Страница JSP Temp.jsp выглядит следующим образом ( url pttern в web.xml: *.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" %>


     
User Name:
Age:
Password:

Класс validationFormвыглядит следующим образом.

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;
    }
}

и класс Controller, в котором должен быть обработан следующим образом (я использую 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;
    }
}

В диспетчер-сервлетя добавил следующее.



Также попытался добавить следующий компонент нет удачи.


Где интерфейс TempServiceвыглядит следующим образом.

package usebeans;

import validators.ValidationForm;

public interface  TempService
{
    public void add(ValidationForm validationForm);
}

и следующий за ним класс TempServiceImpl.

package usebeans;

import validators.ValidationForm;

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

Хотя класс TempServiceImplреализует интерфейс TempService, я получаю следующее исключение.

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)

Изменить:

Хотя я следую тому, что объяснено здесь, проблема остается, и я получаю то же исключение, что и упомянутое выше. Какие параметры конфигурации мне здесь не хватает. Он может находиться в файле dispatcher-servlet.xml. Весь файл dispatcher-servlet.xmlвыглядит следующим образом.




            
        


        
        


        
            
                
                    indexController                
                    tempService                
                
            
        

        


        //The index controller.

        


У меня нет точного представления об этом исключении. Можете ли вы понять, почему это исключение выбрасывается? Какие параметры конфигурации или что-то еще я здесь упустил?

6
задан Lion 21 June 2012 в 03:46
поделиться