`
xxp3369
  • 浏览: 151194 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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;
	}
}
分享到:
评论

相关推荐

    java_oa.rar_java oa_oa ja_办公管理系统

    【标题】"java_oa.rar_java oa_oa ja_办公管理系统"揭示了这是一个基于Java语言开发的办公自动化(OA)系统。OA系统是用于企事业单位内部管理,提高工作效率的重要工具,通常包括文档管理、任务分配、流程审批等功能...

    abon_oa_代码需求1

    21. **文档记录**:每个功能的实现和修改都需要有相应的文档记录,便于后期的查阅和维护。 通过遵循这些规定,开发者可以构建出一个高质量、高效且安全的OA系统,满足业务需求并为未来的扩展打下坚实基础。

    OA_ICESat2_guide.pdf

    《OA_ICESat2_guide.pdf》使用说明详细解读 该文档是关于如何使用开放测高系统(OpenAltimetry)的指南,特别是针对ICESat-2(冰川卫星2号)的数据处理和分析。ICESat-2是美国国家航空航天局(NASA)发射的一颗卫星...

    Using Origin from LabVIEW.pdf

    21. **OA_Save**:保存Origin项目或工作簿。 22. **OA_Wks-Get-2Cols**:获取两个列的数据。 23. **OA_Wks-GetCell(numeric/string)**:获取单元格的数值或字符串值。 24. **OA_Wks-GetRange**:获取工作表的指定...

    致远OA V8.1 数据字典

    - **EXT_ATTR_21 至 EXT_ATTR_30**: 类型为`DATETIME`,表示日期类型的扩展字段。它们可用于记录特定事件的日期和时间信息。 - **EXT_ATTR_31 至 EXT_ATTR_40**: 类型为`VARCHAR(50)`,表示枚举类型的扩展字段。这些...

    第20-21周_MyBatis实现OA系统项目实战-RBAC部分源代码_imooc-oa-rbac.zip

    第20-21周_MyBatis实现OA系统项目实战-RBAC部分源代码_imooc-oa-rbac

    通达OA 2013 无限制修正破解补丁(2012.11.21)

    修正[新建工作流]空白问题 (产生原因:inc\utility_html.php文件里if($TD_MYOA_COMPANY_NAME == _( "通达...) 整合Office_IM 1500授权版本 修正pda、OA精灵不能正常登录问题 本软件仅供测试,请下载24后自行删除!

    通达OAV11办公系统与致远OA 8.1功能对比测试资料

    在修改WEB服务端口这一环节,致远OA的修改流程在第18页,通达OA在第21页。这可能暗示通达OA对于端口配置的设置相对复杂,需要更多步骤。对于企业来说,灵活的端口配置能够满足不同的网络环境需求,因此这一点在选择...

    致远OA V8.1SP1数据字典(2023年最新)

    EXT_ATTR_21至EXT_ATTR_50则是DATETIME类型,用于记录日期和时间信息,如入职日期、会议时间等;EXT_ATTR_31至EXT_ATTR_50则是VARCHAR类型,可以存储枚举类型或固定选项的数据,比如员工的性别、状态等。 此外,EXT...

    泛微OA 8.0 数据字典

    泛微OA 8.0 数据字典,仅供参考 号 表名 中文名称 表类型 说明 1 outerdatawfdetail 输出数据流程详情表 2 outerdatawfperiodset 外部数据触发周期设置表 3 outerdatawfset 外部数据触发设置表 4 ...

    泛微OA-E9流程表单前端接口API(V21).pdf

    泛微OA系统是泛微网络科技股份有限公司开发的协同办公软件,E9版本是对之前版本的优化与升级,支持企业工作流程的数字化管理。在E9版本中,流程表单前端接口API是整个系统中用于前端开发和自定义表单功能的重要组成...

    OA流程时效性分析报告.docx

    值得注意的是,有13815条流程超过三个月未归档,占未归档总数的21%。从年度数据来看,这一问题自2017年至2020年持续存在,且比例稳定在20%左右。 其次,报告分析了流程类型和用户处理情况。240个流程类型中有172个...

    21.集成开发需求方案附件二:OA系统工作流WebService接口使用说明.doc

    泛微OA系统是一款广泛应用于企业办公自动化的工作流管理系统,它提供了强大的WebService接口,使得外部系统可以方便地与其进行数据交互和流程控制。本说明文档详细介绍了如何使用这些接口,包括检查部署状态、调用...

    心通达OA平台采用JAVA SSM(Spring+SpringMVC+MyBatis)框架

    心通达OA平台内置强大的企业级工作流引擎,研发积累21年,服务10多万家企业及政务客户。心通达OA平台采用JAVA SSM(Spring+SpringMVC+MyBatis)框架,技术包括流程引擎(Workflow)、表单引擎、即时通信(im)、签章、手写...

    泛微OA系统表结构说明文档(20161121135308).pdf

    21. BudgetAuditMapping:预算审计映射,可能用于企业预算审计相关的数据匹配和分析。 22. FnaAccount:财务账户模块,包括账户成本中心、部门、账单、日志等信息。 23. FnaBudget:财务预算模块,涉及预算控制、...

    通达OA2015破解补丁

    21、在线自动升级 22、远程技术支持、后续更新和服务 23、修正升级到8.8之后无法设置角色的问题 24、修正8.8升级到8.9后除了admin外其他用户无法登陆的问题 25、同步更新权限文件 测试站地址:...

    oa系统功能介绍及流程图.pdf

    21. **系统管理**:提供系统配置、权限管理等功能,保障系统的正常运行。 22. **快捷菜单与桌面提醒**:支持个性化设置,便于用户快速获取信息。 #### 六、结语 汇泽软件OA802系统不仅涵盖了企业日常办公所需的...

    致远OA远程命令POC.txt

    致远A8-OA 0day POC 漏洞情况: 访问 /seeyon/htmlofficeservlet 出现 DBSTEP V3.0 0 21 0 htmoffice operate err '''

    ASP企业OA办公系统

    ASP是微软开发的一种服务器端脚本语言,用于生成动态网页,尤其在20世纪末到21世纪初广泛应用于企业信息化建设。这个系统旨在提高企业内部的工作效率,通过数字化流程实现日常工作自动化。 在该系统的描述中,提到...

    夏茂政府网集成OA完整版 v2.0

    21.OA集成合同、资产、办公用品、图书、销售等管理; 22.OA集成公文收发、通讯簿、文件柜、工作日志、我的文档等个人办公功能; 23.OA无需安装,支持虚拟空间,上传即可使用,使用浏览器即可实现全球办公; 24.周密的...

Global site tag (gtag.js) - Google Analytics