spring易做图返回值类型?
public class SpringLoginInterceptor implements MethodInterceptor {@Override
public Object invoke(MethodInvocation invocation) throws Throwable {
if(invocation!=null) {
Object[] arg = invocation.getArguments();
if(invocation.getMethod().getName().equals("login")) {
return invocation.proceed();
} else {
for(int i=0;i<arg.length ;i++) {
if(arg[i] instanceof HttpServletRequest) {
HttpServletRequest request = (HttpServletRequest)arg[i];
HttpSession session = request.getSession();
User user = (User) session.getAttribute("USER_SESSION_KEY");
if(user!=null) {
return invocation.proceed();
}
}
}
return new ModelAndView("login");
}
}
return new ModelAndView("login");
}
启动tomcat总是报错:
[org.springframework.web.context.ContextLoader]-[ERROR] Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping#0': Initialization of bean failed; nested exception is java.lang.ClassCastException: org.springframework.web.servlet.ModelAndView cannot be cast to java.lang.String
java.lang.ClassCastException: org.springframework.web.servlet.ModelAndView cannot be cast to java.lang.String
于是把上面代码中的return new ModelAndView("login")任意一个改成返回String类型,再次启动就不报错,难道invoke方易做图要求一定返回String类型吗?好纳闷! --------------------编程问答-------------------- 他返回的是ModelAndView类型的对象
LZ用String接收所以报类型不匹配
改用ModelAndView接收就没问题了 --------------------编程问答--------------------
问下,你的“LZ”是指什么?“改用ModelAndView接收就没问题了
”是不是把返回值类型“Object”改为ModelAndView啊?我试过了,貌似不行啊?
麻烦你说的详细点,好么? --------------------编程问答-------------------- 不好意思!~刚才问了下别人,才知道LZ是楼主的意思 --------------------编程问答--------------------
你的方法的返回值是Object做一个强转就可以了或者把返回值改成
public ModelAndViewinvoke(MethodInvocation invocation) throws Throwable --------------------编程问答--------------------
不是invoke方易做图要求一定返回String类型,而是你其它地方调用invoke后把返回类型强制转换为String报错。
补充:Java , Web 开发