六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 103|回复: 0

动态表单自定义

[复制链接]

升级  2%

56

主题

56

主题

56

主题

举人

Rank: 3Rank: 3

积分
206
 楼主| 发表于 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代码
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表