oa_21

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


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;
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值