convert() {
+ doConvert();
+
+ return parameter;
+ }
+
+}
diff --git a/hsweb-commons/hsweb-commons-utils/src/main/java/org/hswebframework/web/WebUtil.java b/hsweb-commons/hsweb-commons-utils/src/main/java/org/hswebframework/web/WebUtil.java
index 2e85e1e52..f837a58eb 100644
--- a/hsweb-commons/hsweb-commons-utils/src/main/java/org/hswebframework/web/WebUtil.java
+++ b/hsweb-commons/hsweb-commons-utils/src/main/java/org/hswebframework/web/WebUtil.java
@@ -35,6 +35,19 @@ import java.util.Map;
*/
public class WebUtil {
+ /**
+ * 将对象转为http请求参数:
+ *
+ * {name:"test",org:[1,2,3]} => {"name":"test","org[0]":1,"org[1]":2,"org[2]":3}
+ *
+ *
+ * @param object
+ * @return
+ */
+ public static Map objectToHttpParameters(Object object) {
+ return new HttpParameterConverter(object).convert();
+ }
+
/**
* 尝试获取当前请求的HttpServletRequest实例
*
diff --git a/hsweb-commons/hsweb-commons-utils/src/test/java/org/hswebframework/web/HttpParameterConverterTests.java b/hsweb-commons/hsweb-commons-utils/src/test/java/org/hswebframework/web/HttpParameterConverterTests.java
new file mode 100644
index 000000000..f74d178cf
--- /dev/null
+++ b/hsweb-commons/hsweb-commons-utils/src/test/java/org/hswebframework/web/HttpParameterConverterTests.java
@@ -0,0 +1,90 @@
+package org.hswebframework.web;
+
+import org.hswebframework.ezorm.core.dsl.Query;
+import org.hswebframework.ezorm.core.param.QueryParam;
+import org.junit.Assert;
+import org.junit.Test;
+
+import java.math.BigDecimal;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+import static org.junit.Assert.*;
+
+public class HttpParameterConverterTests {
+
+ @Test
+ public void testConvertMap() {
+ Map target = new HashMap<>();
+
+ Map info = new HashMap<>();
+ info.put("nickName", "小宋");
+ info.put("address", "重庆");
+
+
+ Map loginInfo = new HashMap<>();
+ loginInfo.put("lastLoginIp", "127.0.0.1");
+ loginInfo.put("lastLoginTime", new Date());
+ loginInfo.put("lastLoginIp5Times", Arrays.asList("127.0.0.1", "localhost"));
+
+ info.put("loginInfo", loginInfo);
+
+ target.put("name", "admin");
+ target.put("age", 30);
+ target.put("money", new BigDecimal("1000000.00"));
+ target.put("createDate", new Date());
+ target.put("roles", Arrays.asList(1, 2, 3));
+ target.put("info", info);
+
+ HttpParameterConverter converter = new HttpParameterConverter(target);
+
+ Map result = converter.convert();
+
+ System.out.println(result);
+
+ Assert.assertEquals(result.get("roles[0]"), "1");
+ Assert.assertEquals(result.get("roles[1]"), "2");
+ Assert.assertEquals(result.get("roles[2]"), "3");
+ Assert.assertEquals(result.get("name"), "admin");
+ Assert.assertEquals(result.get("info.nickName"), "小宋");
+ Assert.assertEquals(result.get("info.address"), "重庆");
+
+ Assert.assertEquals(result.get("info.loginInfo.lastLoginIp"), "127.0.0.1");
+ Assert.assertEquals(result.get("info.loginInfo.lastLoginIp5Times[0]"), "127.0.0.1");
+ Assert.assertEquals(result.get("info.loginInfo.lastLoginIp5Times[1]"), "localhost");
+
+ }
+
+ @Test
+ public void testConvertObject() {
+ QueryParam param = Query.empty(new QueryParam())
+ .where("name", "张三")
+ .and().like("address", "%重庆%")
+ .nest()
+ .lt("age", 18)
+ .or()
+ .gt("age", 60)
+ .end()
+ .getParam();
+
+ HttpParameterConverter converter = new HttpParameterConverter(param);
+
+ Map result = converter.convert();
+
+ System.out.println(result);
+
+ Assert.assertEquals(result.get("terms[0].column"), "name");
+ Assert.assertEquals(result.get("terms[0].value"), "张三");
+
+ Assert.assertEquals(result.get("terms[1].termType"), "like");
+ Assert.assertEquals(result.get("terms[1].value"), "%重庆%");
+
+ Assert.assertEquals(result.get("terms[2].terms[0].termType"), "lt");
+ Assert.assertEquals(result.get("terms[2].terms[0].value"), "18");
+
+ Assert.assertEquals(result.get("terms[1].value"), "%重庆%");
+
+ }
+}
\ No newline at end of file