oa_21:
添加动态表单呈现层代码
- 理解批量数据的提交技巧(AutoArrayList.java)
添加的代码包括:
web/AutoArrayList.java
web/forms/FlowFormActionForm.java
web/actions/FlowFormAction.java
修改配置文件,加上formManager和formAction的配置:
applicationContext-actions.xml
applicationContext-beans.xml
WebRoot/WEB-INF/struts-config.xml
添加的JSP:
WebRoot/form/*.jsp
添加动态表单呈现层代码
- 理解批量数据的提交技巧(AutoArrayList.java)
添加的代码包括:
web/AutoArrayList.java
web/forms/FlowFormActionForm.java
web/actions/FlowFormAction.java
修改配置文件,加上formManager和formAction的配置:
applicationContext-actions.xml
applicationContext-beans.xml
WebRoot/WEB-INF/struts-config.xml
添加的JSP:
WebRoot/form/*.jsp
package com.bjsxt.oa.web;
import java.util.ArrayList;
public class AutoArrayList extends ArrayList {
private Class itemClass;
public AutoArrayList(Class itemClass) {
this.itemClass = itemClass;
}
public Object get(int index) {
try {
while (index >= size()) {
add(itemClass.newInstance());
}
} catch (Exception e) {
e.printStackTrace();
}
return super.get(index);
}
}
package com.bjsxt.oa.web.actions;
import java.util.Iterator;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import com.bjsxt.oa.manager.FormManager;
import com.bjsxt.oa.manager.WorkflowManager;
import com.bjsxt.oa.model.FieldItem;
import com.bjsxt.oa.model.FlowForm;
import com.bjsxt.oa.model.FormField;
import com.bjsxt.oa.model.Workflow;
import com.bjsxt.oa.web.forms.FlowFormActionForm;
public class FlowFormAction extends BaseAction {
private FormManager formManager;
private WorkflowManager workflowManager;
//主界面,显示所有的流程信息
@Override
protected ActionForward unspecified(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
//获取所有流程信息进行显示
request.setAttribute("workflows", workflowManager.searchAllWorkflows());
return mapping.findForward("index");
}
//打开某个流程表单的定义界面
public ActionForward addFormInput(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
FlowFormActionForm ffaf = (FlowFormActionForm)form;
int workflowId = ffaf.getWorkflowId();
Workflow workflow = workflowManager.findWorkflow(workflowId);
FlowForm flowForm = formManager.findForm(workflowId);
request.setAttribute("flowForm", flowForm);
request.setAttribute("workflow", workflow);
return mapping.findForward("form_input");
}
//添加流程表单
public ActionForward addForm(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
FlowFormActionForm ffaf = (FlowFormActionForm)form;
FlowForm flowform = new FlowForm();
flowform.setTemplate(ffaf.getTemplate());
flowform.setId(ffaf.getId());
formManager.addForm(flowform, ffaf.getWorkflowId());
ActionForward forward = new ActionForward();
forward.setPath("/flowform.do?method=addFormInput&workflowId="+ffaf.getWorkflowId());
forward.setRedirect(true);
return forward;
}
//打开界面,输入表单域,在这个界面上,需要选择表单域的类型和输入形式
public ActionForward formFieldInput(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
FlowFormActionForm ffaf = (FlowFormActionForm)form;
request.setAttribute("fieldtypes", formManager.searchFieldTypes());
request.setAttribute("fieldinputs", formManager.searchFieldInputs());
return mapping.findForward("formfield_input");
}
//添加表单域
public ActionForward addFormField(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
FlowFormActionForm ffaf = (FlowFormActionForm)form;
FormField field = new FormField();
field.setId(ffaf.getId());
field.setFieldLabel(ffaf.getFieldLabel());
field.setFieldName(ffaf.getFieldName());
formManager.addField(field, ffaf.getFormId(), ffaf.getFieldTypeId(), ffaf.getFieldInputId());
return mapping.findForward("pub_add_success");
}
//删除表单域
public ActionForward delField(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
FlowFormActionForm ffaf = (FlowFormActionForm)form;
formManager.delField(ffaf.getId());
return mapping.findForward("pub_del_success");
}
//给某个表单域添加条目(输入界面),列出已有的条目
public ActionForward addItemInput(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
FlowFormActionForm ffaf = (FlowFormActionForm)form;
//首先根据ID的值,加载表单域
FormField field = formManager.findFormField(ffaf.getId());
request.setAttribute("field", field);
return mapping.findForward("item_input");
}
//添加条目
public ActionForward addItem(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
FlowFormActionForm ffaf = (FlowFormActionForm)form;
List items = ffaf.getItems();
for (Iterator iter = items.iterator(); iter.hasNext();) {
FieldItem item = (FieldItem) iter.next();
//如果没有输入任何值,则忽略不处理
if(item == null || item.getValue() == null || item.getValue().trim().equals("")){
iter.remove();
}
}
formManager.updateFieldItems(ffaf.getId(), ffaf.getItems());
return mapping.findForward("pub_add_success");
}
public void setFormManager(FormManager formManager) {
this.formManager = formManager;
}
public void setWorkflowManager(WorkflowManager workflowManager) {
this.workflowManager = workflowManager;
}
}
package com.bjsxt.oa.web.forms;
import org.apache.struts.action.ActionForm;
import org.apache.struts.upload.FormFile;
public class WorkflowActionForm extends ActionForm {
private int id;
private String name;
private FormFile processDef;
private FormFile processImage;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public FormFile getProcessDef() {
return processDef;
}
public void setProcessDef(FormFile processDef) {
this.processDef = processDef;
}
public FormFile getProcessImage() {
return processImage;
}
public void setProcessImage(FormFile processImage) {
this.processImage = processImage;
}
}