針對maven聚合專案,出現的一些問題
近來在做一個專案,碰到一個問題。困擾很久,做個筆記提醒自己
問題1:列印Java類物件,即使重寫類的toString()方法,列印的還是 類物件+ @ + hashcode。何解?
解:專案為maven專案且為pom工程,對於子工程內的pojo類,重寫toString()方法,需要對子工程重新maven install方可。否則一直無解。
問題2:關於maven編譯找不到符號的問題。何解?
解:Controller層方法中引用Service層的方法,同樣由於是pom工程,各模組之間相互依賴,所以在對service層進行修改後需要對其install,然後才可以被controller的方法依賴。
問題3:在進行頁面傳遞請求引數到Controller層時,報400(bad ruquest)錯誤。何解?
分析:首先錯誤在於400,百度結果可知是請求的url有錯。
請求url為:http://localhost:8080/item/list?page=1&rows=30
而後臺controller寫法為如下:
@RequestMapping("/item/list") @ResponseBody public EUDateGurid getTbItemsByPageInfo(@PathVariable("page") Integer page,@PathVariable("rows") Integer rows){ //System.out.println("page : " + page + " , rows : " + rows ); EUDateGurid result = itemTestImpl.getTbItems(page, rows); return result; }
對於url:我們採用的是請求路徑+請求引數的方式;對於這種請求引數的方式應該採用@RequestParam註解解析引數;
還有另外一種url:http://localhost:8080/item/list/page=1/rows=30,這種url沒有引數,因為引數包含在請求路徑裡面,對於這種請求引數方式的url應該採用@PathVariable註解解析請求路徑獲取引數;
所以,controller層的方法無法解析傳遞過來的url,所以報錯。
解答:此處傳遞的url中,引數採用?page=1&rows=30的方式傳遞,應該採用@RequestPatam註解方式解析引數。
當傳遞的引數採用page=1&rows=30的方式傳遞,應該採用@PathVariable註解方式解析 引數
@RequestMapping("/item/list")
@ResponseBody
public EUDateGurid getTbItemsByPageInfo(@RequestParam(value="page") Integer page,@RequestParam(value="rows") Integer rows){
//System.out.println("page : " + page + " , rows : " + rows );
EUDateGurid result = itemTestImpl.getTbItems(page, rows);
return result;
}
注意:此處也可以忽略@ReuqestParam,不寫註解。