jetway 发表于 2013-2-6 09:54:20

动态表单自定义

文章分类:Web前端
<div class="blog_content">
结合Freemarker,将动态表单显示在公文的添加界面上

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

1、了解Freemarker的基本使用(参考freemarker项目中的演示代码)
2、结合Freemarker动态显示表单
- DynaFormFunction.java
- WebRoot/document/add_input.jsp
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;
}
}
 
<div class="dp-highlighter"><div class="bar"><div class="tools">Java代码 http://xxp3369-126-com.iteye.com/images/icon_copy.gif
页: [1]
查看完整版本: 动态表单自定义