아래의 코드에서 서비스의 findByClassesIdAndAttendanceDate의 파라메터인 currentClassDate.getTime()의 값이 예를들어 1469977200000(long data)으로 정상적으로 주고 호출하여도 서버에서 RequestParam으로 받아올때는 1098384768(long data)로 이상하게 변환되어서 가져옵니다..(간헐적으로) debug를 찍어보아도 주는 데이터는 정상적인 값이지만 받아오는값은 이상하게 변환이 됩니다.
매번 그렇다면 조금이라도 찾기 편할 것 같은데 그렇지 않으니 답답할 뿐입니다.
고수님들의 조언 여쭙겠습니다.. 감사합니다.
p.s 테스트를 하다보니 loadAttendance에 breakPoint를 걸면 변환된 이상한 값이 들어오고, 그냥 서버에서만 확인 할 시 제대로 잘 작동합니다. 그러나 사용자는 이슈가 나오니 갈피를 잡지 못하겠네요 ㅠ_ㅠ
protected void loadAttendance() {
attendanceModels = new ArrayList<>();
Call<ResultModel<List<AttendanceModel>>> call = attendanceService.findByClassesIdAndAttendanceDate(currentClasses.getId(), currentClassDate.getTime());
call.enqueue(new SuccessCallback<List<AttendanceModel>>() {
@Override
public void onSuccess(List<AttendanceModel> data) {
attendanceModels.clear();
studentAttendance.clear();
attendanceModels = data;
if(studentAttendance.isEmpty()) {
for(int z = 0; z < attendanceModels.size(); z++) {
HashMap<String, Object> item = new HashMap<>();
item.put("id", attendanceModels.get(z).getId());
item.put("student", attendanceModels.get(z).getStudent());
item.put("attendance", attendanceModels.get(z).getAttendanceStat());
item.put("reason", attendanceModels.get(z).getReason());
studentAttendance.add(item);
}
}
classMembersAdapter.notifyDataSetChanged();
}
});
}
AttendanceService.java
@GET("/rest/teacher/getAttendance")
Call<ResultModel<List<AttendanceModel>>> findByClassesIdAndAttendanceDate(@Query("class_id") int classesId,
@Query("attendance_date") long attendanceDate);
서버컨트롤러.java
@RequestMapping(value="/rest/teacher/getAttendance", method={RequestMethod.POST, RequestMethod.GET})
public ResultModel<List<AttendanceModel>> getAttendance(
@RequestParam(value = "class_id") int class_id,
@RequestParam(value = "attendance_date") long attendance_date,
HttpServletRequest request, HttpServletResponse response) {
List<AttendanceModel> submitList = classesService.getAttendance(class_id, attendance_date);
return ResultModel.success(submitList);
}