SSM項目整合,可以通路controller,但是頁面空白,沒有傳回到相應的頁面
這個問題困擾了我一天,但是最後發現是一個很蠢的錯誤,謹以此文給自己一個提醒。
以下是我的controller
@Controller
public class TestController {
@Autowired
private TestService testService;
@RequestMapping("/user/find.action")
private String find(User user,Model model){
List<User> userList=testService.findUser(user);
model.addAttribute("userList",userList);
return "/test/test.jsp";
}
這是測試的頁面,對應的service和Dao層都沒啥錯誤,配置檔案也沒啥錯誤,運作也沒有報錯,打斷點發現方法能找到,但是進不去方法,這讓我很無奈了。上百度找了很久,跟這個相關的文章實在是太少了,好不容易找到一篇文章給我一點啟發,剛開始按照部落客的方法,添加攔截排除
<mvc:exclude-mapping path="/user/*"/>
但是在我的springMVC的配置檔案中添加這一句是錯誤的,還給我帶來了很多其他的錯誤,于是放棄了。
後來思考良久之後,想到既然是攔截的問題,那我為什麼不幹脆注釋掉這一段代碼試試,事實證明我的想法是正确的,問題就出在攔截器裡面,我注釋掉這段代碼之後,所有控制器都放行,不會被攔截,我就成功的通路到了我的test.jsp頁面,于是去檢查我的攔截器,在攔截器裡什麼都沒配置,三個空方法
public class LoginInterceptor implements HandlerInterceptor{
@Override
public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
throws Exception {
// TODO Auto-generated method stub
}
@Override
public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
throws Exception {
// TODO Auto-generated method stub
}
@Override
public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception {
// TODO Auto-generated method stub
return false;
}
}
可以看到我犯了一個很蠢的錯誤,我把傳回設成了false,既然被攔截了,傳回的又都是false,而且沒做任何處理,是以不管怎麼樣我都通路不到我的test頁面。eclipse自動生成的預設是false,是以一定要檢查自己的代碼。
這個問題竟然困擾了我一天,實在是太蠢了,長一下記性,下次不能再犯了。