oa_22
oa_22:结合Freemarker,将动态表单显示在公文的添加界面上
只需拷贝freemarker.jar包到类路径即可
1、了解Freemarker的基本使用(参考freemarker项目中的演示代码)
2、结合Freemarker动态显示表单
- DynaFormFunction.java
- WebRoot/document/add_input.jsp(使用自定义JSTL函数)
package com.bjsxt.oa.web;import java.io.IOException;import java.io.StringWriter;import java.io.Writer;import java.util.HashMap;import java.util.Map;import com.bjsxt.oa.manager.FormManager;import com.bjsxt.oa.model.FlowForm;import freemarker.cache.ClassTemplateLoader;import freemarker.template.Configuration;import freemarker.template.Template;import freemarker.template.TemplateExceptionHandler;public class DynaFormFunction {private static FormManager formManager;private static Configuration cfg = new Configuration();static{//定义模板文件应该从哪里加载,这是定义由DynaFormFunction类所在的路径下面的templates目录加载cfg.setTemplateLoader(new ClassTemplateLoader(DynaFormFunction.class,"templates"));cfg.setTemplateExceptionHandler(TemplateExceptionHandler.IGNORE_HANDLER);}public static String form(int workflowId){try {//获得workflow对应的表单定义的数据FlowForm form = formManager.findForm(workflowId);if(form == null){return null;}Template template = cfg.getTemplate(form.getTemplate());Map root = new HashMap();root.put("form", form);//最终的输出的位置Writer out = new StringWriter();template.process(root, out);return out.toString();} catch (Exception e) {e.printStackTrace();}return null;}public void setFormManager(FormManager formManager) {DynaFormFunction.formManager = formManager;}}
<%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%><%@include file="/common/common.jsp" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=GB18030"><link href="style/oa.css" rel="stylesheet" type="text/css"><script language="javascript" src="script/public.js"></script><title>添加公文信息</title></head><body><center><form action="document.do" method="post" enctype="multipart/form-data"><TABLE class="tableEdit" border="0" cellspacing="1" cellpadding="0" style="width:580px;"><TBODY><TR><!-- 这里是添加、编辑界面的标题 --><td align="center" class="tdEditTitle">您要创建的公文</TD></TR><TR><td><!-- 主输入域开始 --><input type="hidden" name="method" value="add"><input type="hidden" name="workflowId" value="${documentForm.workflowId}"><table class="tableEdit" style="width:580px;" cellspacing="0" border="0" cellpadding="0"><tr><td class="tdEditLabel" >公文名称</td><td class="tdEditContent"><input type="text" name="title"></td><td class="tdEditLabel" >公文描述</td><td class="tdEditContent"><input type="text" name="description"></td></tr><tr><td class="tdEditLabel" >公文附件</td><td class="tdEditContent"><input type="file" name="contentFile"></td><td class="tdEditLabel" ></td><td class="tdEditContent"></td></tr></table>${my:form(documentForm.workflowId)}<!-- 主输入域结束 --></td></TR></TBODY></TABLE><TABLE><TR align="center"><TD colspan="3" bgcolor="#EFF3F7"><input type="submit" name="saveButton"class="MyButton" value="保存公文信息"> <input type="button" class="MyButton"value="关闭窗口" ></TD></TR></TABLE></form></center></body></html>
页:
[1]