방법1 : get방식을 이용해 url에서 직접 매개변수의 값을 설정해서 게시판으로 이동하는 방법
조건 : 모든 화면jsp파일을 동일하게 써야 할 것. 구조가 다르다면 방법2를 써야 함.
1-1. ?객체명.변수명=원하는게시판값
게시판 경로로 이동하는 메뉴바(네비nav)에서 해당 경로에 ?객체명.변수명=원하는게시판값 을 넣어준다.
컨트롤러에서 사용하는 Criteria 클래스의 객체 cri에는 이미 게시판종류에 대한 변수가 선언되어있음.
+ addObject를 이용해서 cri의 값을보내서 화면을 페이지에 맞춰 띄워주기
@GetMapping("/list")
public ModelAndView boardListGet(ModelAndView mv, Criteria cri) {
if(cri.getBoardType() == null || cri.getBoardType().equals("")) {
cri.setBoardType("free");
}
ArrayList<BoardVO> list = boardService.getBoardList(cri);
int totalCount = boardService.getTotalCount(cri);
PageMaker pm = new PageMaker(totalCount, 4, cri);
mv.addObject("pm",pm);
mv.addObject("list", list);
mv.addObject("cri", cri);
mv.setViewName("/board/list");
return mv;
}
@Data
public class Criteria {
private int currentPage; //현재 페이지
private int contentPerPage; //한 페이지 당 컨텐츠(게시글) 갯수
private String boardType; //검색타입이 아니라, 게시글 타입
private String sortType; //id, authority 정렬
private String sort; //desc, asc
네비바에 있는 URL에서 값을 줌
<li><a href="<%=request.getContextPath()%>/board/list?boardType=free">자유게시판</a></li>
<li><a href="<%=request.getContextPath()%>/board/list?boardType=notice">공지사항</a></li>
1-2. ?변수명=게시판값
위와달리 criteria 클래스 처럼 게시판 타입을 처리해줄 변수를 가진 객체를 이용하지 않고 매개변수를 이용해서 바로 실행할 수 있음.
@GetMapping("/list")
public ModelAndView boardListGet(ModelAndView mv, String type) {
if(type == null || type.equals("")) {
type= "free";
}
ArrayList<BoardVO> list = boardService.getBoardList(cri);
int totalCount = boardService.getTotalCount(cri);
PageMaker pm = new PageMaker(totalCount, 4, cri);
mv.addObject("pm",pm);
mv.addObject("list", list);
mv.addObject("type", type);
mv.setViewName("/board/list");
return mv;
}
네비바에 있는 URL에서 값을 줌
<li><a href="<%=request.getContextPath()%>/board/list?type=free">자유게시판</a></li>
<li><a href="<%=request.getContextPath()%>/board/list?type=notice">공지사항</a></li>
방법2.
2-1. 컨트롤러 코드만 새로만들고 해당 컨트롤러에서 자체적으로 "notice" "free"와 같은 게시판값을 지정해줌
*기존에 만들었던 게시판 컨트롤러코드를 그대로 복붙해서 만든 뒤, 게시판 명만 바르게 설정해주면 됨
@Controller
@RequestMapping("/CS/board")
@AllArgsConstructor
public class CSBoardController {
BoardService boardService;
TeacherService teacherService;
@GetMapping("/list")
public ModelAndView boardListGet(ModelAndView mv, Criteria cri) {
cri.setBoardType("CS");
ArrayList<BoardVO> list = boardService.getBoardList(cri);
int totalCount = boardService.getTotalCount(cri);
PageMaker pm = new PageMaker(totalCount, 4, cri);
mv.addObject("pm",pm);
mv.addObject("list", list);
mv.addObject("boardType", "CS/");
mv.setViewName("/board/list");
return mv;
}
네비바에서 URL을 통해 이동할 때, 경로값을 지정으로 바로 넣어주면 됨.
<li><a href="<%=request.getContextPath()%>/CS/board/list">문의사항</a></li>
'괴발개발 > Spring Framework' 카테고리의 다른 글
에러: It's likely that neither a Result Type nor a Result Map was specified. (0) | 2021.09.03 |
---|---|
(게시판)게시글 작성 후, 이동 링크 (0) | 2021.09.03 |
템플릿 적용 시, 주의(mapping에 주소가 있는데 "/경로명/*) (0) | 2021.09.01 |
console.log(data)에서 data변수에 실어준 값 object로 실제값 찍히지 않음 (0) | 2021.09.01 |
pagination 페이지네이션 (0) | 2021.08.30 |