jqGrid 기초 학습: 11jqGrid 의 조회 시 배경 과 의 상호작용

jqGrid 가 조회 할 때 배경 과 상호작용 하 는 것 은 비교적 까다 로 운 문제 입 니 다. 보 내 온 데이터 가 불규칙 하기 때 문 입 니 다.
단일 필드 에 서 는 Firefox 의 firebug 를 통 해 디 버 깅 을 진행 합 니 다. 검색 요청 을 제출 한 후 배경 으로 보 내 는 매개 변 수 는 다음 과 같 습 니 다.
단일 필드 와 배경 대화
이 를 통 해 알 수 있 듯 이 단일 필드 조회, jqGrid 가 서버 에 전달 하 는 매개 변 수 는 searchField, searchString, searchOper 라 는 세 가지 매개 변수 입 니 다.
searchField 는 검색 할 필드 를 대표 합 니 다. searchString 은 검색 의 내용 입 니 다. searchOper 는 조작 입 니 다. 배경 에서 얻 은 searchOper 의 값 은 'eq', 'ne', 'lt', 'le', 'lt', 'ge', 'bw', 'bn', 'in', 'ni', 'ew', 'en', 'cn', 'nc' 입 니 다. 이 는 jqGrid 에서 사용 하지 않 고 설정 할 수 있 습 니 다.
다 중 필드 조 회 는 같은 방법 을 사용 합 니 다. 다 중 필드 조회, jqGrid 가 배경 에 전달 하 는 매개 변 수 는 json 문자열 임 을 알 수 있 습 니 다.
jqGrid 다 중 필드 조회
따라서 이 데 이 터 를 얻 으 려 면 제 이 슨 데 이 터 를 분석 해 야 한다.
동시에 우 리 는 알 아 차 렸 다.단일 필드 조회 든 다 중 필드 조회 든 프론트 데스크 에서 조 회 를 실행 하면 백 스테이지 에 을 전달 합 니 다.검색 을 사용 할 지 여 부 를 가리 키 는 search 인자 입 니 다.
다른 것 은 쓸데없는 소리 하지 말고 바로 소스 코드 로 올 려 라.새 규칙 클래스
public class SearchRule {
        private String field;   //    
    private String op;      //    
    private String data;    //      
        public String getField() {
                return field;
        }
        public void setField(String field) {
                this.field = field;
        }
        public String getOp() {
                return op;
        }
        public void setOp(String op) {
                this.op = op;
        }
        public String getData() {
                return data;
        }
        public void setData(String data) {
                this.data = data;
        }
}

필터 클래스 새로 만 들 기
public class FilterSearch {
        private String groupOp; //          ,   AND  OR   

        private List<searchrule> rules; //       ,        

        public String getGroupOp() {
                return groupOp;
        }
        public void setGroupOp(String groupOp) {
                this.groupOp = groupOp;
        }
        public List</searchrule><searchrule> getRules() {
                return rules;
        }
        public void setRules(List</searchrule><searchrule> rules) {
                this.rules = rules;
        }

}

</searchrule>

검색 도구 클래스
public class JqGridHandler {

        private HttpServletRequest request = null;

        private String _search = "false";
        private String searchField;
        private String searchOper;
        private String searchString;
        private String filters;
        private String sidx = "1";
        private String sord = "desc";

        //      search
        FilterSearch filterSearch = null;

        public JqGridHandler() {

        }

        public JqGridHandler(HttpServletRequest request) {
                this.request = request;

        }

        public String getWheres(String prefix, boolean isWhere) {
                conditions();
                if(tranToSQL(prefix).trim().equals("")){
                        return "";
                }
                if (!isWhere) {
                        return new StringBuilder(" where ").append(tranToSQL(prefix))
                                        .toString();
                }
                return new StringBuilder(" and ").append(tranToSQL(prefix)).toString();
        }

        public String getOrders(String prefix, boolean isOrder) {
                init();
                StringBuilder sb = new StringBuilder();
                if (isOrder) {
                        if (null != prefix) {
                                sb.append(prefix).append(".");
                        }

                } else {
                        sb.append(" order by ");
                        if (null != prefix) {
                                sb.append(prefix).append(".");
                        }
                }
                return sb.append(doTables(sidx)).append(" ").append(sord).toString();
        }

        //   conditions   sql  
        public String tranToSQL(String prefix) {
                StringBuilder sb = new StringBuilder("");

                if (null != filterSearch) {
                        List<searchrule> rules = filterSearch.getRules();
                        int count = 0;
                        if (null != rules && (count = rules.size()) > 0) {
                                for (SearchRule rule : rules) {
                                        if (null != rule.getField() && null != rule.getData()
                                                        && null != rule.getOp()) {
                                                if ("eq".equalsIgnoreCase(rule.getOp())) {

                                                        sb.append(rule.getField()).append(" = ")
                                                                        .append("'").append(rule.getData()).append(
                                                                                        "'");

                                                } else if ("nq".equalsIgnoreCase(rule.getOp())) {
                                                        if (null != prefix) {
                                                                sb.append(prefix).append(".");
                                                        }
                                                        sb.append(rule.getField()).append(" != ").append(
                                                                        "'").append(rule.getData()).append("'");
                                                } else if ("lt".equalsIgnoreCase(rule.getOp())) {
                                                        if (null != prefix) {
                                                                sb.append(prefix).append(".");
                                                        }
                                                        sb.append(rule.getField()).append(" < ")
                                                                        .append("'").append(rule.getData()).append(
                                                                                        "'");
                                                } else if ("le".equalsIgnoreCase(rule.getOp())) {
                                                        if (null != prefix) {
                                                                sb.append(prefix).append(".");
                                                        }
                                                        sb.append(rule.getField()).append(" <= ").append(
                                                                        "'").append(rule.getData()).append("'");
                                                } else if ("gt".equalsIgnoreCase(rule.getOp())) {
                                                        if (null != prefix) {
                                                                sb.append(prefix).append(".");
                                                        }
                                                        sb.append(rule.getField()).append(" > ")
                                                                        .append("'").append(rule.getData()).append(
                                                                                        "'");
                                                } else if ("ge".equalsIgnoreCase(rule.getOp())) {
                                                        if (null != prefix) {
                                                                sb.append(prefix).append(".");
                                                        }
                                                        sb.append(rule.getField()).append(" >= ").append(
                                                                        "'").append(rule.getData()).append("'");
                                                } else if ("bw".equalsIgnoreCase(rule.getOp())) {
                                                        if (null != prefix) {
                                                                sb.append(prefix).append(".");
                                                        }
                                                        sb.append(rule.getField()).append(" like ").append(
                                                                        "'").append(rule.getData()).append("%")
                                                                        .append("'");
                                                } else if ("ew".equalsIgnoreCase(rule.getOp())) {
                                                        if (null != prefix) {
                                                                sb.append(prefix).append(".");
                                                        }
                                                        sb.append(rule.getField()).append(" like ").append(
                                                                        "'").append("%").append(rule.getData())
                                                                        .append("'");
                                                } else if ("cn".equalsIgnoreCase(rule.getOp())) {
                                                        if (null != prefix) {
                                                                sb.append(prefix).append(".");
                                                        }
                                                        sb.append(rule.getField()).append(" like ").append(
                                                                        "'").append("%").append(rule.getData())
                                                                        .append("%").append("'");
                                                } else {

                                                }
                                                count--;
                                                if (count > 0) {
                                                        if (null != filterSearch.getGroupOp()) {
                                                                if (filterSearch.getGroupOp().equals("and"))
                                                                        sb.append(" and ");
                                                                else
                                                                        sb.append(" or ");
                                                        }

                                                }
                                        }

                                }
                        }
                }
                return sb.toString();
        }

        //   
        @SuppressWarnings("unchecked")
        private void conditions() {
                //    ,  request  ,    set   。
                init();

                //   ,    filersearch
                if (null != _search && "true".equalsIgnoreCase(_search)) {
                        //       ,             。
                        if (null != filters && filters.length() > 0) {
                                Map m = new HashMap();
                                m.put("rules", SearchRule.class);
                                filterSearch = (FilterSearch) JsonUtils.getDTOList(filters,
                                                FilterSearch.class, m);

                        } else {
                                if (null != searchOper && null != searchString
                                                && null != searchField) {
                                        SearchRule rule = new SearchRule();
                                        rule.setData(searchString);
                                        rule.setOp(searchOper);
                                        rule.setField(doTables(searchField));
                                        filterSearch = new FilterSearch();
                                        filterSearch.setGroupOp(null);
                                        List</searchrule><searchrule> rules = new ArrayList</searchrule><searchrule>();
                                        rules.add(rule);
                                        filterSearch.setRules(rules);
                                }
                        }
                }

        }

        private  void init() {
                if (request != null) {
                        _search = request.getParameter("_search");
                        searchOper = request.getParameter("searchOper");
                        searchString = request.getParameter("searchString");
                        searchField = request.getParameter("searchField");
                        filters = request.getParameter("filters");
                        sidx = request.getParameter("sidx");
                        sord = request.getParameter("sord");
                }
        }

        public HttpServletRequest getRequest() {
                return request;
        }

        public void setRequest(HttpServletRequest request) {
                this.request = request;
        }

        public String get_search() {
                return _search;
        }

        public void set_search(String _search) {
                this._search = _search;
        }

        public String getSearchField() {
                return searchField;
        }

        public void setSearchField(String searchField) {
                this.searchField = searchField;
        }

        public String getSearchOper() {
                return searchOper;
        }

        public void setSearchOper(String searchOper) {
                this.searchOper = searchOper;
        }

        public String getSearchString() {
                return searchString;
        }

        public void setSearchString(String searchString) {
                this.searchString = searchString;
        }

        public String getFilters() {
                return filters;
        }

        public void setFilters(String filters) {
                this.filters = filters;
        }

        public String getSidx() {
                return sidx;
        }

        public void setSidx(String sidx) {
                this.sidx = sidx;
        }

        public String getSord() {
                return sord;
        }

        public void setSord(String sord) {
                this.sord = sord;
        }

        public FilterSearch getFilterSearch() {
                return filterSearch;
        }

        public void setFilterSearch(FilterSearch filterSearch) {
                this.filterSearch = filterSearch;
        }

        private String doTables(String str){
                if(str.startsWith("__")){
                        str = str.substring(2);
                        return str.replaceAll("_", ".");
                } else {
                        return str;
                }

        }
}
</searchrule>

그 중에서 도 dotables 함수 가 무엇 을 하 는 지 신경 쓰 지 마 세 요.
json 도구 류 는 json 도구 류 를 참조 하여 진행 합 니 다.

좋은 웹페이지 즐겨찾기