어으 죽을 맛이다.ㅋㅋㅋㅋ
이것때문에 개고생함.
컨트롤러에서 서비스로 세션 값을 넘길 때,
세션값 가져오기를 컨트롤러 내에서 하면 안 된다.
가져오는 건
DraftController.java (일부)
@Controller
@AllArgsConstructor
public class DraftController {
private DraftService service;
HttpSession session;
// 진행문서함 목록으로 접속 시 작동
@GetMapping("/goingDraft")
public String goingDraft(Model model) {
// 세션이 존재할 때만
if (session.getAttribute("userId") != null) {
model.addAttribute("goingDraft", service.getList());
}
// 세션이 존재하지 않으면
else {
model.addAttribute("msg","로그인한 사용자만 이용할 수 있는 페이지입니다.");
return "/login/LoginForm";
}
return "/goingDraft";
}
// 기안하기 창 - 부서목록 불러오기
@GetMapping("/registDraft")
public String registDraft(Model model) {
if (session.getAttribute("userId") != null) {
model.addAttribute("getDeptList", service.getDeptList()); // https://offbyone.tistory.com/368
}
else {
model.addAttribute("msg","로그인한 사용자만 이용할 수 있는 페이지입니다.");
return "/login/LoginForm";
}
return "/registDraft";
}
// 기안하기 창 - ajax처리
@RequestMapping(value="/ajaxRegistDraft", method=RequestMethod.POST)
@ResponseBody // return결과를 json으로 만들어줌
public List<EmployeeVO> ajaxRegistDraft(@RequestParam(value="deptName") String deptName) {
List<EmployeeVO> vo = service.getNameList(deptName);
return vo;
}
// 기안하기 창 - 기안작성하기
// 폼의 input에 들어있는 name과 value 쌍으로 전송하는 게 post 방식
@PostMapping("/registDraft")
public String registDraft(DraftVO draft, RedirectAttributes rttr) {
// 세션에서 유저id와 유저부서id 갖고오기 **하지 마셈**
//int userId = (int)session.getAttribute("userId");
//int userDeptId = (int)session.getAttribute("userDeptId");
// draft 객체에 세션값 넣기 **하지 마셈**
//draft.setD_dept(userId);
//draft.setD_writer(userDeptId);
// draft 넣어 service단 돌리기
service.registDraft(draft);
rttr.addFlashAttribute("d_id", draft.getD_id());
return "redirect:/goingDraft";
}
registDraft.jsp
<label class="col-form-label col-sm-1 text-sm-right" style = "font-weight: bold;">작성자</label>
<div class="col-sm-2">
<input type="text" class="form-control" value="${sessionScope.userName}" readonly> <!-- Login한 employee 이름 가져오게 바꽈줘야 함 -->
<input type="hidden" name="d_writer" value="${sessionScope.userId}">
<input type="hidden" name="d_dept" value="${sessionScope.userDeptId}">
</div>
이렇게 form 태그 내부 input에 hidden으로 값을 넘겨줘야 함.
봐주신 교수님은 아마 컨트롤러에서는 객체의 copy본을 만든 듯하다고 하심.
'Java > Spring' 카테고리의 다른 글
[Spring] 프로젝트 import 404 오류 해결 모음 (0) | 2019.11.15 |
---|---|
[Spring] jsp에서 날짜 시간 받아서 mySQL에 저장하기 (0) | 2019.11.14 |
[Spring] MVC 게시판 제작 시 JSP에서 LocalDateTime 포맷 변경하기 (0) | 2019.11.07 |
No mapping found /경로 오류 해결 (0) | 2019.11.05 |
[Spring] Setter 오류 해결법 (5) | 2019.10.25 |
댓글