jqGrid 기초 학습: 11jqGrid 의 조회 시 배경 과 의 상호작용
단일 필드 에 서 는 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 도구 류 를 참조 하여 진행 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
콘텐츠 SaaS | JSON 스키마 양식 빌더Bloomreach Content를 위한 JSON Form Builder 맞춤형 통합을 개발합니다. 최근 Bloomreach Content SaaS는 내장 앱 프레임워크를 사용하여 혁신적인 콘텐츠 유형 필드를 구축할...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.