最终生成的条件查询页面
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class QuerySelect {
private String value;
private String text;
private List list;
}
具体工具类
public class GenPageQueryUtil {
private static List ids = new ArrayList();
public static String gen(String data) {
List res = JsonUtil.string2Obj(data, List.class, QuerySelect.class);
StringBuffer sb = genForm(res);
genScript(sb);
return sb.toString();
}
/**
* 生成对应的JavaScript
*
* @param sb
*/
private static void genScript(StringBuffer sb) {
sb.append("\n");
sb.append("\t$(\"#queryText\").attr(\"name\",\"queryValue\");\n");
sb.append("\t$(\"#querySelect\").change(function () {\n");
sb.append("\t\tlet val = $(\"#querySelect option:selected\").val();\n");
boolean falg = true;
for (String id : ids) {
if (id.contains("Select")) {
if (falg) {
sb.append("\t\tif ('" + id + "'.includes(val)){\n");
falg = false;
} else {
sb.append("\t\t}else if ('" + id + "'.includes(val)){\n");
}
//显示
sb.append("\t\t\t$(\"#" + id + "\").show();\n");
sb.append("\t\t\t$(\"#" + id + "\").attr(\"name\",\"queryValue\");\n");
for (String id2 : ids) {
if (!id2.equals(id)) {
//隐藏
sb.append("\t\t\t$(\"#" + id2 + "\").hide();\n");
sb.append("\t\t\t$(\"#" + id2 + "\").removeAttr(\"name\");\n");
}
}
}
}
sb.append("\t\t}else {\n");
//显示
sb.append("\t\t\t$(\"#queryText\").show();\n");
sb.append("\t\t\t$(\"#queryText\").attr(\"name\",\"queryValue\");\n");
for (String id : ids) {
if (id.contains("Select")) {
//隐藏
sb.append("\t\t\t$(\"#" + id + "\").hide();\n");
sb.append("\t\t\t$(\"#" + id + "\").removeAttr(\"name\");\n");
}
}
sb.append("\t\t}\n");
sb.append("\t})\n");
sb.append("");
}
/**
* 生成表单
*
* @return
*/
private static StringBuffer genForm(List querySelectList) {
StringBuffer sb = new StringBuffer("\n");
sb.append("\t\n");
for (QuerySelect querySelect : querySelectList) {
String value = querySelect.getValue();
String text = querySelect.getText();
sb.append("\t\t" + text + "\n");
}
sb.append("\t\n");
//保存所有表彰元素的id
ids.add("queryText");
sb.append("\t\n");
for (QuerySelect querySelect : querySelectList) {
List list = querySelect.getList();
if (list == null) {
continue;
}
String v = querySelect.getValue();
ids.add(v + "QuerySelect");
sb.append("\t\n");
for (QuerySelect item : list) {
String value = item.getValue();
String text = item.getText();
sb.append("\t\t" + text + "\n");
}
sb.append("\t\n");
}
sb.append("\t开始时间: \n");
sb.append("\t结束时间:\n");
sb.append("\t\n");
sb.append("\n");
return sb;
}
}
测试代码
//测试,用来生成最终用来生成查询头的JSON数据结构
@Test
void genDataStruct(){
List querySelectList = new ArrayList();
querySelectList.add(new QuerySelect("id", "编号", null));
querySelectList.add(new QuerySelect("name", "省名", null));
List areaQuerySelect = new ArrayList();
areaQuerySelect.add(new QuerySelect("东北", "东北", null));
areaQuerySelect.add(new QuerySelect("西北", "西北", null));
areaQuerySelect.add(new QuerySelect("西南", "西南", null));
areaQuerySelect.add(new QuerySelect("华东", "华东", null));
areaQuerySelect.add(new QuerySelect("华西", "华西", null));
areaQuerySelect.add(new QuerySelect("华南", "华南", null));
querySelectList.add(new QuerySelect("area", "地区", areaQuerySelect));
List statusQuerySelect = new ArrayList();
statusQuerySelect.add(new QuerySelect("1", "可用", null));
statusQuerySelect.add(new QuerySelect("2", "禁用", null));
querySelectList.add(new QuerySelect("status", "状态", statusQuerySelect));
String json = JsonUtil.obj2String(querySelectList);
System.out.println(json);
}
// 根据Java代码生成查询头
@Test
void fun1() throws SQLException {
List querySelectList = new ArrayList();
querySelectList.add(new QuerySelect("id", "编号", null));
querySelectList.add(new QuerySelect("name", "省名", null));
List areaQuerySelect = new ArrayList();
areaQuerySelect.add(new QuerySelect("东北", "东北", null));
areaQuerySelect.add(new QuerySelect("西北", "西北", null));
areaQuerySelect.add(new QuerySelect("西南", "西南", null));
areaQuerySelect.add(new QuerySelect("华东", "华东", null));
areaQuerySelect.add(new QuerySelect("华西", "华西", null));
areaQuerySelect.add(new QuerySelect("华南", "华南", null));
querySelectList.add(new QuerySelect("area", "地区", areaQuerySelect));
List statusQuerySelect = new ArrayList();
statusQuerySelect.add(new QuerySelect("1", "可用", null));
statusQuerySelect.add(new QuerySelect("2", "禁用", null));
querySelectList.add(new QuerySelect("status", "状态", statusQuerySelect));
StringBuffer sb = genForm(querySelectList);
genScript(sb);
System.out.println(sb);
}
//根据JSON数据生成查询头
@Test
void fun2() {
String data = """
[
{
"value": "id",
"text": "编号",
"list": null
},
{
"value": "name",
"text": "省名",
"list": null
},
{
"value": "area",
"text": "地区",
"list": [
{
"value": "东北",
"text": "东北",
"list": null
},
{
"value": "西北",
"text": "西北",
"list": null
},
{
"value": "西南",
"text": "西南",
"list": null
},
{
"value": "华东",
"text": "华东",
"list": null
},
{
"value": "华西",
"text": "华西",
"list": null
},
{
"value": "华南",
"text": "华南",
"list": null
}
]
},
{
"value": "status",
"text": "状态",
"list": [
{
"value": "1",
"text": "可用",
"list": null
},
{
"value": "2",
"text": "禁用",
"list": null
}
]
}
]
""";
String res = gen(data);
System.out.println(res);
}
测试
调用fun2方法,将生成的代码拷贝到页面中,注意:需要导入JQuery,比如:
DOCTYPE html>
Title
编号
省名
地区
状态
东北
西北
西南
华东
华西
华南
可用
禁用
开始时间:
结束时间:
$("#queryText").attr("name", "queryValue");
$("#querySelect").change(function () {
let val = $("#querySelect option:selected").val();
if ('areaQuerySelect'.includes(val)) {
$("#areaQuerySelect").show();
$("#areaQuerySelect").attr("name", "queryValue");
$("#queryText").hide();
$("#queryText").removeAttr("name");
$("#statusQuerySelect").hide();
$("#statusQuerySelect").removeAttr("name");
} else if ('statusQuerySelect'.includes(val)) {
$("#statusQuerySelect").show();
$("#statusQuerySelect").attr("name", "queryValue");
$("#queryText").hide();
$("#queryText").removeAttr("name");
$("#areaQuerySelect").hide();
$("#areaQuerySelect").removeAttr("name");
} else {
$("#queryText").show();
$("#queryText").attr("name", "queryValue");
$("#areaQuerySelect").hide();
$("#areaQuerySelect").removeAttr("name");
$("#statusQuerySelect").hide();
$("#statusQuerySelect").removeAttr("name");
}
})