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中实现吗强>
# 1 楼答案
如果您想检查每个请求的一些参数,请查看注释
您基本上用这个注释定义了一个类,它将在每次请求时被调用。您可以在那里定义模型属性方法、错误处理程序方法等
您可以创建一个生成modelattribute“_valid”的方法,并将requestparams作为输入,如果异常无效,则引发异常。然后一个exceptionhandler方法可以捕获它并生成一个错误页面
# 2 楼答案
如果您使用的是Spring MVC 3.1+,则handler不是处理请求的控制器实例。它是
HandlerMethod
的一个实例。查看this博客帖子,然后this回答