- 浏览: 124847 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
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 8829最近做了一个微信 ... -
原子操作实现并发
2012-06-14 17:02 1205使用synchronized: 使用synchroni ... -
velocity配置与springMVC
2012-06-07 11:30 5255web.xml <?xml version=&quo ... -
Trie 树 及Java实现
2012-02-01 11:39 1697举个简单的例子。 给你100000个长度不超过10的单词 ... -
activiti使用
2011-07-25 15:25 2461使用activiti报错 Caused by: java.l ... -
Struts2请求乱码问题
2011-05-06 16:25 1071ie6中的bug 在jsp请求Action ... -
软件开发流程图
2011-03-25 11:36 1205自己对软件开发流程理解 -
使用AOP实现异常处理
2011-03-16 15:08 5470@Aspect public class Service ... -
JSPWiki使用说明书
2010-08-31 16:26 7703在使 ... -
jsp 下载出现乱码和空格问题
2010-08-31 13:21 2182关于中文文件下载的问 ... -
代理服务器的缓存问题
2010-06-24 17:00 1199如果要使用代理服务器时,会出现页面信息串。 处理方法(写一个过 ... -
浅谈Eclipse调用Tomcat服务的原理
2010-06-11 14:23 3319转:http://www.173it.cn/Html/?5 ... -
w3c 中doc生成一个基于hibernate的hbm.xml文件
2010-06-03 13:01 1413package com.gosophia.metadata ... -
如何让eclipse辅助提示struts.xml文件的编写
2010-05-21 19:06 2192一般情况下,如果计算机连接上了internet,eclipse ... -
Eclipse 常用设置
2010-05-21 13:40 889转: http://www.blogjava.net/Todd ... -
Java程序执行原理
2010-05-02 17:10 1003<o:p> </o:p>首先 ... -
什么是线程安全
2010-04-30 16:14 925如果你的代码所在 ... -
Servlet的线程安全问题
2010-04-30 15:46 725转:http://zjeers.iteye.com/blog/ ... -
JSR(转)
2010-04-26 13:35 1464J2ME 配置规范 ========= JSR 30 --- ... -
Jpa
2010-04-09 10:20 1958来自:http://www.oracle.com/ ...
相关推荐
初学者可以通过此实例了解如何将FreeMarker与Struts结合,实现动态页面的生成和控制层的处理。 首先,让我们详细了解FreeMarker。FreeMarker的工作原理是,它接收来自服务器的数据,然后根据预先定义的模板文件生成...
Struts2提供了丰富的特性,如拦截器、插件架构、灵活的数据绑定以及强大的表单验证功能,使得开发者能够更高效地组织和管理应用程序的业务逻辑。 FreeMarker则是一个模板引擎,它允许开发者使用模板语言来分离应用...
在这个名为"Struts2表单数据获取项目"的资源中,我们将深入探讨如何使用Struts2框架来处理表单提交的数据。 首先,我们来看看核心组件`Struts.xml`。这是Struts2应用的主要配置文件,用于定义动作(Actions)、结果...
Struts2和FreeMarker是Java Web开发中两个重要的框架,它们常常被一起使用来构建动态、数据驱动的Web应用程序。Struts2是一个基于MVC(Model-View-Controller)设计模式的开源框架,用于简化Java Servlets和JSP的...
- **Struts2**: 直接使用Action来处理表单数据,不再需要专门的ActionForm。Action可以是一个普通的Java对象,并且可以通过标签库直接访问其属性。此外,Struts2还支持ModelDriven模式,允许使用模型对象来代替...
Freemarker是一个强大的模板引擎,常用于Web应用中的视图层渲染,与Struts2等MVC框架结合使用。在本篇文章中,我们将探讨Freemarker的基础知识,并结合Struts2中的checkboxlist进行研究。 首先,让我们理解...
总的来说,这个"Struts2 做的留言板"项目是一个很好的学习资源,涵盖了Struts2框架的基本使用和核心概念,对于理解和实践MVC模式以及提升Java web开发技能非常有帮助。通过分析和实践这个项目,你可以深入了解Struts...
6. **其他依赖的jar包**:Struts2运行还需要一些其他的库,如freemarker或velocity用于模板引擎,javassist用于动态类生成,log4j或slf4j用于日志记录等。 引入Struts2的jar包有多种方式: - **Eclipse/IDEA等集成...
Struts2支持多种结果类型,如dispatcher(默认,转发到JSP),redirect(重定向到URL),freemarker(使用FreeMarker模板引擎渲染)等。 **9. 国际化和主题** Struts2支持多语言环境,通过资源文件(如message....
在JSP中,我们可以使用Struts2的标签库,如`s:form`、`s:textfield`等,来创建动态的表单和显示数据。同时,通过OGNL(Object-Graph Navigation Language)表达式,我们可以方便地在视图中访问模型层的数据。 在...
5. **OGNL(Object-Graph Navigation Language)**:Struts2使用OGNL作为默认表达式语言,用于在Action和视图之间传递数据。通过OGNL,可以在JSP页面中直接访问Action中的属性,或者在Action中动态设置模型数据。 6. ...
2. **表单验证**:展示了基于Struts2的FieldAware和Validator插件的表单验证机制。 3. **拦截器的使用**:包括预处理和后处理,如LoggingInterceptor、ValidationInterceptor等。 4. **OGNL表达式**:在JSP页面中...
Struts2 是一个基于 Java 的企业级应用框架,它支持多种技术栈,包括但不限于 JSP、FreeMarker 和 Velocity。Struts2 提供了一种灵活的方式来构建和管理 Web 应用程序。而 JavaScript 则是 Web 前端开发的重要组成...
Struts2、Freemarker、Hibernate和Spring是Java开发中常用的四大开源框架,它们的整合应用可以构建出高效、灵活的企业级Web应用。这个压缩包文件的标题表明它包含了一个整合了这四个框架的示例项目,主要是实现登录...
Struts2是一个强大的Java web应用程序框架,用于构建和...总的来说,"使用struts2写的小项目"是一个实际应用Struts2框架的实例,通过学习和分析该项目,开发者可以深入理解Struts2的工作原理,提升Web应用开发能力。
Struts2使用拦截器机制来处理HTTP请求,因此Action只需要关注业务逻辑部分。这也使得Struts2的Action更易于测试和维护。 #### 三、表单验证机制的不同 - **Struts1**: Struts1提供了基于ActionForm的验证机制,即...
2. **配置文件**:Struts2使用XML配置文件(struts.xml或struts.properties)来定义Action、结果类型、拦截器等。这些配置是理解程序工作流程的关键。 3. **Interceptor拦截器**:拦截器允许在Action执行前后插入...
- 创建FreeMarker模板文件,如`index.ftl`,使用FreeMarker语法定义页面结构和动态内容。 - 编写Struts Action类,处理业务逻辑,并将结果数据放入模型对象。 - 在struts-config.xml配置文件中添加Action配置,...
Struts1、Spring和Hibernate是Java Web开发中的三个...随着经验的积累,开发者可以逐步添加更多的功能和优化,比如引入Spring Security进行权限管理,或者使用Spring MVC替换Struts1以利用其更现代的特性和性能优势。
5. **OGNL(Object-Graph Navigation Language)**:Struts2使用OGNL作为默认表达式语言,用于在Action和视图之间传递数据。 6. **拦截器**:拦截器是Struts2的核心组件,用于处理请求、验证输入、事务管理、日志...