动态表格模板html,动态表单自定义(来钦波)

动态表单自定义(回钦波)

结合Freemarker,将动态表单显示在公文的添加界面上

只需拷贝freemarker.jar包到类路径即可

1、了解Freemarker的基本使用(参考freemarker项目中的演示代码)

2、结合Freemarker动态显示表单

- DynaFormFunction.java

- WebRoot/document/add_input.jsp(使用自定义JSTL函数)

Java代码

1251091529.gif

packagecom.bjsxt.oa.web;

importjava.io.IOException;

importjava.io.StringWriter;

importjava.io.Writer;

importjava.util.HashMap;

importjava.util.Map;

importcom.bjsxt.oa.manager.FormManager;

importcom.bjsxt.oa.model.FlowForm;

importfreemarker.cache.ClassTemplateLoader;

importfreemarker.template.Configuration;

importfreemarker.template.Template;

importfreemarker.template.TemplateExceptionHandler;

publicclassDynaFormFunction {

privatestaticFormManager formManager;

privatestaticConfiguration cfg =newConfiguration();

static{

//定义模板文件应该从哪里加载,这是定义由DynaFormFunction类所在的路径下面的templates目录加载

cfg.setTemplateLoader(newClassTemplateLoader(DynaFormFunction.class,"templates"));

cfg.setTemplateExceptionHandler(TemplateExceptionHandler.IGNORE_HANDLER);

}

publicstaticString form(intworkflowId){

try{

//获得workflow对应的表单定义的数据

FlowForm form = formManager.findForm(workflowId);

if(form ==null){

returnnull;

}

Template template = cfg.getTemplate(form.getTemplate());

Map root =newHashMap();

root.put("form", form);

//最终的输出的位置

Writer out =newStringWriter();

template.process(root, out);

returnout.toString();

}catch(Exception e) {

e.printStackTrace();

}

returnnull;

}

publicvoidsetFormManager(FormManager formManager) {

DynaFormFunction.formManager = formManager;

}

}

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;

}

}

Java代码

1251091529.gif

pageEncoding="GB18030"%>

html PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">

添加公文信息

您要创建的公文

公文名称

公文描述

公文附件

${my:form(documentForm.workflowId)}

class="MyButton"value="保存公文信息">

value="关闭窗口"οnclick="window.close()">

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值