本帖最后由 zhangle123 于 2011-12-08 17:04:17 编辑

解决方案 »

  1.   

    jsp页面部分
    <c:if test="${not empty documentForm.workFlowId}">
    ${my:myform(documentForm.workFlowId)}
    </c:if>
      

  2.   

    模板定义
    <#if form != null>
    <#list form.fields as field>
    <table class="tableEdit" style="width:580px;" cellspacing="0" border="0" cellpadding="0">
    <tr>
    <td class="tdEditLabel" >${field.label}</td>
    <td class="tdEditContent"><#include field.fieldInput.template > </td>
    </tr>
    </table>
    </#list></#if>
      

  3.   


    import java.io.IOException;
    import java.io.OutputStreamWriter;
    import java.io.StringWriter;
    import java.io.Writer;
    import java.util.HashMap;
    import java.util.Map;import cn.edu.hbmy.oa.manager.FormManager;
    import cn.edu.hbmy.oa.manager.impl.AbstractManager;
    import cn.edu.hbmy.oa.model.FlowForm;
    import freeer.template.Configuration;
    import freeer.template.Template;
    import freeer.template.TemplateException;public class DynamicFormFunction extends AbstractManager{
    private static FormManager formManager ;

    private static Configuration conf = FreeMakerConfiguration.getConf();

    public String getDynamicForm(int workFlowId){
    FlowForm flowForm = formManager.findForm(workFlowId);

    try {
    //获取模板源
    Template template = conf.getTemplate(flowForm.getTemplate());
    Writer out = new StringWriter();//输出
    if(template == null){
    return null;
    }
    Map map = new HashMap();
    map.put("form", flowForm);

    template.process(map, out);
    StringBuffer strbuff = new StringBuffer(out.toString());
    out.flush();
    out.close();//关闭

    return strbuff.toString();

    } catch (IOException e) {
    e.printStackTrace();
    } catch (TemplateException e) {
    e.printStackTrace();

    return null;
    }
     
    public void setFormManager(FormManager formManager) {
    DynamicFormFunction.formManager = formManager;
    }
     
    }