有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java无法扩展spring控制器类

这是我的控制器类

@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(); 

它返回的是对象类的实例,但不是我的超级类超级控制器

我必须为其进行额外配置吗?可以在SpringMVC中实现吗


共 (2) 个答案

  1. # 1 楼答案

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

    @ControllerAdvice
    

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

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

  2. # 2 楼答案

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