dynamicFormConfigTempletAction.jsp 4.86 KB
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ page import="com.weaver.formmodel.mobile.manager.MobileUserInit"%>
<%@ page import="weaver.hrm.User"%>
<%@ page import="java.util.List" %>
<%@ page import="java.util.Map" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.HashMap" %>
<%@ page import="com.alibaba.fastjson.JSONObject" %>
<%@ page import="com.weaver.formmodel.mobile.utils.MobileCommonUtil" %>
<%
JSONObject resultObj = new JSONObject();
try {
    User user = MobileUserInit.getUser(request, response);
    if(user == null){
        throw new IllegalAccessException("No user login, please try again later after login!");
    }
    /*
    此示例返回结果如下,详细示例参照(/mobilemode/mobile/demo/plugin/DynamicForm/demo.html):
    [{
        title: "1.文本字段",
        group: true,
        childs: [
          {
              group: false,
              type: "FInputText",
              option: {
                  field : {
                      label: "单行文本",
                      name: "f1",
                      type: "text"
                  },
                  required: true
              }
          }
        }
      ]
    },...]
    */
    List<Map<String, Object>> datas = new ArrayList<>();
    //分组1
    Map<String, Object> groupNode1 = getGroupNode("1、文本字段");
    //分组下的子节点
    List<Map<String, Object>> childs1 = new ArrayList<>();
    groupNode1.put("childs", childs1);
    childs1.add(getChildNode("FInputText", true, "单行文本", "field1", "这是一个文本字段", false, false, -1, null));
    childs1.add(getChildNode("FTextarea", false, "多行文本", "field2", "这是一个多文本字段", false, false, -1, null));
    datas.add(groupNode1);

    //分组2
    Map<String, Object> groupNode2 = getGroupNode("2、选择字段");
    //分组下的子节点
    List<Map<String, Object>> childs2 = new ArrayList<>();
    groupNode2.put("childs", childs2);
    childs2.add(getChildNode("FSelect", true, "选择框", "field3", "1", false, false, -1, getItems()));
    childs2.add(getChildNode("FCheckbox", false, "单选", "field4", "2", false, false, -1, getItems()));
    childs2.add(getChildNode("FCheckbox", true, "多选", "field5", "1,2", true, true, -1, getItems()));
    datas.add(groupNode2);

    //分组3
    Map<String, Object> groupNode3 = getGroupNode("3、拍照");
    //分组下的子节点
    List<Map<String, Object>> childs3 = new ArrayList<>();
    groupNode3.put("childs", childs3);
    childs3.add(getChildNode("FPhoto", false, "拍照", "field6", "", false, false, 3, getItems()));
    datas.add(groupNode3);
    resultObj.put("datas", datas);
    resultObj.put("status", "1");
}catch (Exception e){
    e.printStackTrace();
    resultObj.put("status", "0");
    resultObj.put("errMsg", MobileCommonUtil.getExceptionMsg(e));
}finally {
    out.print(resultObj);
}
%>

<%!
private static List<Map<String, String>> getItems(){
    List<Map<String, String>> items = new ArrayList<>();
    Map<String, String> item1 = new HashMap<>();
    item1.put("name", "java");
    item1.put("value", "1");
    items.add(item1);
    Map<String, String> item2 = new HashMap<>();
    item2.put("name", "javascript");
    item2.put("value", "2");
    items.add(item2);
    Map<String, String> item3 = new HashMap<>();
    item3.put("name", "jquery");
    item3.put("value", "3");
    items.add(item3);
    Map<String, String> item4 = new HashMap<>();
    item4.put("name", "zepto");
    item4.put("value", "4");
    items.add(item4);
    return items;
}

private static Map<String, Object> getGroupNode(String title){
    Map<String, Object> groupNode = new HashMap<>();
    groupNode.put("title", title);
    groupNode.put("group", true);
    return groupNode;
}

private static Map<String, Object> getChildNode(String type, boolean required, String label, String fieldName, String value, boolean vertical, boolean multi, int limit, List<Map<String, String>> items){
    Map<String, Object> childNode = new HashMap<>();
    childNode.put("group", false);
    childNode.put("type", type);//字段类型
    Map<String, Object> childOption = new HashMap<>();//字段属性
    Map<String, Object> childOptionField = new HashMap<>();
    childOption.put("field", childOptionField);
    childOption.put("required", required);
    childOptionField.put("label", label);
    childOptionField.put("name", fieldName);
    childOptionField.put("value", value);//字段值
    switch (type){
        case "FSelect":
            childOption.put("items", items);
            break;
        case "FCheckbox":
            childOption.put("items", items);
            childOption.put("vertical", vertical);
            childOption.put("multiselect", multi);
            break;
        case "FPhoto":
            childOption.put("limit", limit);
            break;
    }
    childNode.put("option", childOption);
    return childNode;
}
%>