- 浏览: 122996 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
yingtaier:
[i][4/i]引用-[*]引用---[size=x-larg ...
使用Cxf在中的自定义拦截器来输出日志信息 -
风雨故都:
Page 里面有什么属性
WebService(cxf框架)返回一个包含有map的一个page对象 -
ys20081411:
请问这个乱码和jdk的版本有关系么?我用了你的代码,但是报错了 ...
JSPWiki使用说明书 -
thrillerzw:
哈哈,难啊。
我想找个女朋友,但是不会表白。 -
thrillerzw:
不能 把每带过的地方,只是当成一个路过的地方,从来没有付出过 ...
活在一个有梦想的世界里
由于项目中需要用到一个可定制的动态表单功能,管理员可以根据需要定制定出想要的表单,参考了一些视频和网上资料,自己做了一个动态电子表单模块。
由于这个模块是在整个项目当中的,没能提供出相应的源代码。由于时间原因自己没能做出一个例子。
上面的模板文件没有定义全,如果想要真正使用的话,还的定义出其他模板文件。
如图:
如果上面有不对的或不清楚的地方,请大家留言,或加我msn通知我 zhaoyanfangmsn@hotmail.com
//FreemarkerManage 的初始配置 public class FreemarkerManage { private static String ENCODING="UTF-8"; private static Configuration cfg=new Configuration(); static{ //定义模板的位置 cfg.setTemplateLoader(new ClassTemplateLoader(FreemarkerManage.class,"templates")); cfg.setObjectWrapper(new DefaultObjectWrapper()); //设置异常 cfg.setTemplateExceptionHandler(TemplateExceptionHandler.IGNORE_HANDLER); cfg.setEncoding(Locale.CHINA, ENCODING); } public static Configuration getConfiguration(){ return cfg; } } @Component public class DynaFormFunction { private static String defaultTemplate = "document_form.ftl"; private static String showTemplate = "showform.ftl"; private static String initForm = "initForm.ftl"; private static FlowFormManageService flowFormManageService; private static FormInstanceWebService formInstanceWebService; private static ReportJobWebService reportJobWebService; /*** * 初始化表单信息,将数据放到模板中 * @param workflowId * @return */ public static String form(long workflowId) { FlowForm flowForm = flowFormManageService.findFlowFormById(workflowId); if (null == flowForm) { return null; } /** * 加载freemarker的配置 */ Configuration configuration = FreemarkerManage.getConfiguration(); try { /** * 加载表单模板文件 */ Template template = configuration.getTemplate(document_form); Writer writer = new StringWriter(); Map root = new HashMap(); root.put("form", flowForm); /** * 将模板与数据进行相结合 */ template.process(root, writer); return writer.toString(); } catch (Exception e) { e.printStackTrace(); } return null; } /** * 显示动态表单的值 * @param formInstanceId * @return */ public static String showForm(long formInstanceId) { try { FormInstanceDTO formInstanceDTO = formInstanceWebService .findFormInstanceById(formInstanceId); if (null == formInstanceDTO) { return null; } /** * 加载freemarker的配置 */ Configuration configuration = FreemarkerManage.getConfiguration(); /** * 获取动态表单的实例数据 */ Map<Long, Object> dataInstance = formInstanceDTO.getInstanceData(); Map<String, Object> newDataInstance = reportJobWebService .findFlowFormData(dataInstance); /** * 根据配置加载模板 */ Template template = configuration.getTemplate(showTemplate); Writer writer = new StringWriter(); Map root = new HashMap(); root.put("showForm", newDataInstance); /** * 将模板与数据进行结合 */ template.process(root, writer); return writer.toString(); } catch (Exception e) { e.printStackTrace(); } return null; } } 模板文件的编写 (1).initForm.ftl的编写 <table> <#assign i=0> <#assign dataValue=""> <#list form.formFields as field> <#assign i=i+1> <#if field_index % 2 = 0> <tr> </#if> <td colspan="2" valign="top"> <span class="form-field"><span class="important-field-star">*</span>${field.fieldLable}:</span> <#include "${field.input.key}"> </td> <#if i=2 || !field_has_next > <#assign i=0> </tr> </#if> </#list> </table> /**** *自定义一个tld文件放在WEB-INF下,文件名称叫my.tld */ <?xml version="1.0" encoding="UTF-8" ?> <taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" version="2.0"> <tlib-version>1.0</tlib-version> <short-name>my</short-name> <uri>http://www.gosophia.com/oa/functions</uri> <function> <name>form</name> <function-class>com.gosophia.reportData.action.DynaFormFunction</function-class> <function-signature>java.lang.String form(long)</function-signature> </function> <function> <name>showForm</name> <function-class>com.gosophia.reportData.action.DynaFormFunction</function-class> <function-signature>java.lang.String showForm(long)</function-signature> </function> </taglib> /** **在web.xml文件进行配置 */ <jsp-config> <taglib> <taglib-uri>http://www.gosophia.com/myfunctions</taglib-uri> <taglib-location>/WEB-INF/my.tld</taglib-location> </taglib> </jsp-config> 在jsp页面显示,并且引进tld文件 /** * *初始化电子表单页面 */ //先在jsp页面引进自己的标签 <%@taglib prefix="my" uri="http://www.gosophia.com/oa/functions"%> //在jsp直接引入就可以 ${my:form(flowForm.formId)} /** *动态显示电子表单内容 * */ //先在jsp页面引进自己的标签 <%@taglib prefix="my" uri="http://www.gosophia.com/oa/functions"%> //显示动态表单中数据 ${my:showForm(approvalReportJobDto.reportJobDto.formInstanceId)}
由于这个模块是在整个项目当中的,没能提供出相应的源代码。由于时间原因自己没能做出一个例子。
上面的模板文件没有定义全,如果想要真正使用的话,还的定义出其他模板文件。
如图:
如果上面有不对的或不清楚的地方,请大家留言,或加我msn通知我 zhaoyanfangmsn@hotmail.com
发表评论
-
微信公众账号与网站信息对接
2013-07-10 17:37 8804最近做了一个微信 ... -
原子操作实现并发
2012-06-14 17:02 1178使用synchronized: 使用synchroni ... -
velocity配置与springMVC
2012-06-07 11:30 5219web.xml <?xml version=&quo ... -
Trie 树 及Java实现
2012-02-01 11:39 1646举个简单的例子。 给你100000个长度不超过10的单词 ... -
activiti使用
2011-07-25 15:25 2422使用activiti报错 Caused by: java.l ... -
Struts2请求乱码问题
2011-05-06 16:25 1039ie6中的bug 在jsp请求Action ... -
软件开发流程图
2011-03-25 11:36 1172自己对软件开发流程理解 -
使用AOP实现异常处理
2011-03-16 15:08 5426@Aspect public class Service ... -
JSPWiki使用说明书
2010-08-31 16:26 7660在使 ... -
jsp 下载出现乱码和空格问题
2010-08-31 13:21 2158关于中文文件下载的问 ... -
代理服务器的缓存问题
2010-06-24 17:00 1170如果要使用代理服务器时,会出现页面信息串。 处理方法(写一个过 ... -
浅谈Eclipse调用Tomcat服务的原理
2010-06-11 14:23 3286转:http://www.173it.cn/Html/?5 ... -
w3c 中doc生成一个基于hibernate的hbm.xml文件
2010-06-03 13:01 1382package com.gosophia.metadata ... -
如何让eclipse辅助提示struts.xml文件的编写
2010-05-21 19:06 2165一般情况下,如果计算机连接上了internet,eclipse ... -
Eclipse 常用设置
2010-05-21 13:40 859转: http://www.blogjava.net/Todd ... -
Java程序执行原理
2010-05-02 17:10 977<o:p> </o:p>首先 ... -
什么是线程安全
2010-04-30 16:14 893如果你的代码所在 ... -
Servlet的线程安全问题
2010-04-30 15:46 694转:http://zjeers.iteye.com/blog/ ... -
JSR(转)
2010-04-26 13:35 1444J2ME 配置规范 ========= JSR 30 --- ... -
Jpa
2010-04-09 10:20 1909来自:http://www.oracle.com/ ...
相关推荐
8.1.1 页面上:如何使用自定义结果组件构建Struts 2 Ajax应用程序 171 8.1.2 实现JSON结果类型 173 8.2 常用的结果类型 180 8.2.1 RequestDispatcher,也叫做dispatcher 180 8.2.2 ServletRedirectResult,也叫做...
10.为什么要使用struts2代替struts1.x 7 二、struts.xml配置及例程 7 1.配置文件的优先级 7 2.配置形式 8 3.package配置相关 8 4.分工合作include:指定多个配置文件 10 5.tomcat认证访问 10 6.初识拦截器 11 7....
3.1 使用web.xml配置Struts2实现Web项目Struts2应用 37 3.2 使用配置文件struts.xml实现页面导航定义 38 3.3 使用Action类控制导航业务数据 40 3.4 使用ActionSupport进行校验 42 第4章 另一Struts2核心技术:拦截器...
包括最常用的jsp页面,也可以说Velocity和FreeMarker等模板技术中的使用 2.Struts2分类 (1)UI标签:(User Interface, 用户界面)标签,主要用于生成HTML元素标签,UI标签又可分为表单标签非表单标签 (2)非UI...
开发人员还可以通过拦截器(可以自定义拦截器或者使用Struts2提供的拦截器)来对请求进行预处理和后处理,这样一来,处理请求就变得更加模块化,从而进一步减小耦合度。模块化是一个通用的主题——可以通过插件机制...
作者处处从实战出发,在丰富的示例中直观地探讨了许多实用的技术,如数据类型转换、文件上传和下载、提高Struts 2应用的安全性、调试与性能分析、FreeMarker、Velocity、Ajax,等等。跟随作者一道深入Struts 2,聆听...
Struts2 框架是一种基于 Java 语言的 Web 应用程序框架,它提供了一个灵活的和可扩展的架构,以帮助开发者快速构建基于 Web 的应用程序。下面是 Struts2 框架应用实例的详细介绍: 一、Struts2 框架配置 在开始...
· 使用注释: 使用Struts 2开发的应用可以使用Java 5注释,作为XML和Java属性配置之外的一个替代办法。注释尽量减少了对XML的需要。Action、拦截器、验证及类型转换方面都有注释。 插入: 只要把插件JAR文件放到\WEB-...
如数据类型转换、文件上传和下载、Struts2应用的安全性、调试与性能分析、FreeMarker、Velocily、Ajax,等等。跟随作者一道深入Struts2。聆听大量来之不易的经验之谈。你对Struts2开发框架的理解和应用水平都将更上...
通过分析动态表单的实现原理和运行机制,采用MVC架构,运用Struts,Spring和iBATIS整合的轻量级J2EE的多层软件架构和模块化思想,结合Fckeditor在线编辑器和FreeMarker组件,设计并实现了一个B/S结构的、可视化的动态表单...
Struts2 Struts2核心控制流程、Ognl、Action、Interceptor、Result、FreeMarker、Struts2标记库、Struts2扩展、Struts2应用技巧(输入验证、消息国际化、文件上传和下载、防止重复提交等)。 熟练掌握Struts2核心...
7.3.3使用struts2标签设计模板 170 7.4freemarker与velocity的比较 171 本章小结 171 课后练习 172 第8章hibernate框架基础 173 8.1orm简介 173 8.1.1应用orm的意义 173 8.1.2流行的orm框架 174 8.2准备...
16.2 协同使用Spring和WebWork 2/Struts 2 16.3 集成Spring和Tapestry 16.3.1 集成Spring和Tapestry 3 16.3.2 集成Spring和Tapestry 4 16.4 协同使用Spring和JSF 16.4.1 解析JSF管理的属性 16.4.2 解析Spring...
2、struts 2 标签;3、jstl 各类型标签;4、spring 标签;5、jsf标签;6、jsp标签、语法;7、freemarker语法;8、velocity语法;9、ajax常用函数;10、常用js表单检测函数;11、常用js函数;12、多功能jsp编辑器...
16.2协同使用spring和webwork2/struts2 16.3集成spring和tapestry 16.3.1集成spring和tapestry3 16.3.2集成spring和tapestry4 16.4协同使用spring和jsf 16.4.1解析jsf管理的属性 16.4.2解析springbean 16.4.3...
3.3.4 使用动态切入点 3.3.5 切入点实施 3.4 创建引入 3.4.1 实现IntroductionInterceptor 3.4.2 创建一个引入Advisor 3.4.3 谨慎使用引入通知 3.5 使用ProxyFactoryBean 3.6 自动...
16.2 协同使用Spring和WebWork 2/Struts 2 16.3 集成Spring和Tapestry 16.3.1 集成Spring和Tapestry 3 16.3.2 集成Spring和Tapestry 4 16.4 协同使用Spring和JSF 16.4.1 解析JSF管理的属性 16.4.2 解析Spring...