본문 바로가기

Spring

게시판의 검색

 

검색버튼을 눌렀을 때 tbList로 이동하겠다. 주소가 들어왔으니 컨트롤러로 이동

tbList.jsp

 

 

검색버튼을 누르면 (특정짓기위한)no,searchTxt, searchGbn이 넘어오게 됨

이걸 hashmap으로 받고 그걸 다시 getTbList에 넣어줌

하지만 우리가 기존에 만든 리스트는 검색을 고려하지 않고 만들었기때문에 getTbList에 빨간줄이 쭉 감

캡쳐할 당시에는 change를 마친상태였어서 없음 어쨋든 

우리는 기존 것이 해쉬맵을 받을 수 있도록 변경해야 함

testController.java

 

getTbList에 마우스를 갖다대고 세번째 Change method -  클릭

ITestService에 해쉬맵이 달림

 

오버라이딩은 이클립스가 알아서 해주지 않음 직접 TestService에서도 해쉬맵을 받을 수 있도록 추가

다음에 dao에도 params를 보내야하니 return에 params 추가

TestService.java

 

iTestDao.java
TestDao.java

 

이제 쿼리로 params를 보내니 sql로 해쉬맵을 받음 이걸가지고 이제 검색기능을 구현할거임

 

 

mysql↓ 특정상황에만 생기는 조건은 선택적인 조건이기에 where 1 =1 이라는 조건을 줘서 필수 조건으로 만듬

 

 

 

검색어가 들어왔을 때에만 조건부분이 추가되면 좋겠음

그러기 위해선 Dynamic Query가 필요 

Dynamic Query : 주어진 데이터에 따라 쿼리가 가변적인 것

 

mybatis에서 if문은 아래와 같이 작성 c:if문과 거의 비슷

 

searchtxt가 Null이 아니고 비어있지않다면 검색하겠다. => 검색어가 있다면

검색버튼을 누른적이 없을 때 : null

검색은 눌렀는데 아무것도 입력이 없을 때 : ' '

 

그 다음엔 제목인지 작성자인지 구분해야하고 el태그로 값(searchTxt)을 넣어줌

 

Test_sql

 

=> 이렇게까지만 완성하면 검색어를 입력했을 때 검색어와 옵션이 남아있지않는 버그가 있음 

 

 

param. => 넘어오는 것이 있을 때에만 값을 가져오겠다이기 때문에 검색어가 있을때만 검색어를 가져오겠다.

searchTxt에 검색어가 입력됐을때 검색어를 넣어주겠다라고 하면 검색어가 없어지는 건 해결됨 

tbList.jsp

 

 

넘어오는 값이 비어있지않다면 searchGbn에 세팅을 하겠다.

tbList.jsp

 

검색 상태까지 유지도 끝

 

이제 상세보기에서 돌아가기 버튼만들기

상세보기에는 검색데이터도 가져감

상세보기 갈 때 actionForm을 실행하는데 검색할때도 actionForm을 실행하기때문 

우리는 이미 tb한테 검색데이터를 넘겨줬음 이전으로 돌아올때는 tb가 그냥 다시 넘겨주기만 하면 됨

 

 

데이터를 보낼 폼을 하나 만듬 page는 나중에 만든거 

폼엔 no, searchGbn, searchTxt가 넘어옴

tb.jsp

 

 

검색어를 입력하고 엔터를 누르면 폼이 그냥 이동되는 버그 발생 해결법

 

return false : 이벤트를 동작하지않겠다 타이핑되는 이벤트자체를 실행하지않겠다.

enter키 일때에는 이동을 안하겠다. 혹은 내가 준 이벤트만 실행하겠다라는 행위가 필요함

엔터가 들어왔을 때 검색은 가능하게 하겠지만 엔터를 눌러서 뭘 실행하지는 말라는 뜻