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();我不会让超级控制器成为超级类。