1. 程式人生 > >play.jobs.Job使用時注意型別轉換異常

play.jobs.Job使用時注意型別轉換異常

公司使用的是play框架。開發時用到匯出功能,那當然是用job了,在controller中新增一個方法:

public static void downExcelModel(List<ConsumptionRecord> crList) {
		try{
			response.setContentTypeIfNotSet("application/csv");		
			response.setHeader("Content-Disposition","attachment;filename=cr.csv");			
			response.reset();
			Promise<Boolean> csv=new ExportCRCsvJob(crList,response.out).now();
			await(csv);			
			response.out.close();			 
		}catch(Exception ex){
			Logger.info("out excel error",ex);
		}
	}

呼叫該方法時總是報型別轉換異常:

Oops: ClassCastException
An unexpected error occured caused by exception ClassCastException: java.lang.String cannot be cast to java.util.List
 | play-thread-1
play.exceptions.UnexpectedException: Unexpected Error
	at play.mvc.Controller.redirect(Controller.java:613)
	at play.mvc.Controller.redirect(Controller.java:543)
	at controllers.ConsumptionRecords.downExcelModel1(ConsumptionRecords.java)
	at controllers.ConsumptionRecords.index(ConsumptionRecords.java:90)
	at play.mvc.ActionInvoker.invokeWithContinuation(ActionInvoker.java:548)

打樁看型別沒有錯誤,檢查了兩個小時也沒有發現問題。。。

最後發現是方法的訪問許可權為public導致的,改為private問題解決。