Java 无法扩展spring控制器类

Java 无法扩展spring控制器类,java,spring,spring-mvc,Java,Spring,Spring Mvc,这是我的控制器类 @Controller @RequestMapping("/") public class TokenEndpointspring extends SuperController { @RequestMapping(value = "/springtokenclientid") public @ResponseBody OAuthParams authorizeClientIdSecret( @RequestParam("pa

这是我的控制器类

@Controller
@RequestMapping("/")
public class TokenEndpointspring extends SuperController {

    @RequestMapping(value = "/springtokenclientid")

    public @ResponseBody
    OAuthParams authorizeClientIdSecret(
            @RequestParam("param1") String param1,
            @RequestParam("param2") String param2, HttpServletRequest req)
            throws OAuthSystemException, IOException {
        OAuthParams param = new OAuthParams();
        if (CheckClientid(param1,param2)) {
            param.setHaserror(false);
        } else {
            param.setHaserror(true);
            param.setErrorMessage("invlaid client id ");

        }

        return param;
    }
这是我的超级控制器类。该类旨在由每个控制器扩展

public class SuperController   {


    public boolean CheckCommonParameter(HttpServletRequest request,HttpServletResponse response){
        // some logic 
    }
这是我的拦截器

public class Interceptor implements HandlerInterceptor {

    public boolean preHandle(HttpServletRequest request,
            HttpServletResponse response, Object handler) throws Exception {
    // class cast exception is thrown 
        SuperController supercontroller=(SuperController)handler;

        // this is what i want to achieve 
        if(!supercontroller.CheckCommonParameter(request, response){
return false;
        }
我无法将处理程序对象强制转换为超级控制器对象。

我遇到了班级演员异常。

当我检查超级类的代码时

handler.getClass().getSuperclass().newInstance(); 
它返回的是对象类的实例,但不是我的超级类超级控制器。


我是否必须为其进行额外配置?是否可以在spring mvc中实现它?

如果您使用的是spring mvc 3.1+,handler不是处理请求的控制器实例。它是
HandlerMethod
的一个实例。查看博客帖子,然后回答

如果您想检查每个请求的一些参数,请查看注释

@ControllerAdvice
您基本上用这个注释定义了一个类,它将在每次请求时被调用。您可以在那里定义模型属性方法、错误处理程序方法等


您可以创建一个生成modelattribute“_valid”的方法,并将requestparams作为输入,如果异常无效,则引发异常。然后一个exceptionhandler方法可以捕获它并生成一个错误页。

您是否尝试调试它并找出该对象的类型?调试时,我获取TokenEndpointspring对象。再次使用代码处理程序调试时。getClass().getSuperclass().newInstance();我不会让超级控制器成为超级类。