SearchFilter 源码:
- <strong><span style="color:#dcdcdc;">package org.springside.modules.persistence;
- import java.util.Map;
- import java.util.Map.Entry;
- </span>import org.apache.commons.lang3.StringUtils;
- import com.google.common.collect.Maps;
- public class SearchFilter {
- public enum Operator {
- EQ, LIKE, GT, LT, GTE, LTE
- }
- public String fieldName;
- public Object value;
- public Operator operator;
- public SearchFilter(String fieldName, Operator operator, Object value) {
- this.fieldName = fieldName;
- this.value = value;
- this.operator = operator;
- }
- /**
- * searchParams中key的格式为OPERATOR_FIELDNAME
- */
- public static Map<String, SearchFilter> parse(Map<String, Object> searchParams) {
- Map<String, SearchFilter> filters = Maps.newHashMap();
- for (Entry<String, Object> entry : searchParams.entrySet()) {
- // 过滤掉空值
- String key = entry.getKey();
- Object value = entry.getValue();
- if (StringUtils.isBlank((String) value)) {
- continue;
- }
- // 拆分operator与filedAttribute
- String[] names = StringUtils.split(key, "_");
- if (names.length != 2) {
- throw new IllegalArgumentException(key + " is not a valid search filter name");
- }
- String filedName = names[1];
- Operator operator = Operator.valueOf(names[0]);
- // 创建searchFilter
- SearchFilter filter = new SearchFilter(filedName, operator, value);
- filters.put(key, filter);
- }
- return filters;
- }
- }</strong><span style="color:#dcdcdc;">
- </span>
来源:http://code.taobao.org/p/guanglai/src/trunk/springside4/modules/core/src/main/java/org/springside/modules/persistence/SearchFilter.java
可以看到仅支持六种操作:EQ, LIKE, GT, LT, GTE, LTE
修改程序name命名即可!注意后台Controller保持一致!