天天看點

SSM項目整合,可以通路controller,但是頁面空白,沒有傳回到相應的頁面

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,是以一定要檢查自己的代碼。

這個問題竟然困擾了我一天,實在是太蠢了,長一下記性,下次不能再犯了。

繼續閱讀