freemarker是看到大家的推荐开始强制自己学习的,毕竟不能总用io来实现模板的功能啊,而且很多牛人都说这个东西好,自己也不免心动。
一段时间下来,感觉freemarker这种模板技术确实是好,而且功能很强,但是总是感觉它的“水”太深,一般的程序员在使用的时候会遇到很多困难。而且freemarker远远没有velocity的影响力大,其社区的活跃度也小了很多,这也是学习曲线相对比较高的原因。robbin曾经说半天时间就能熟练掌握他,我想这时对一个经验丰富的人员说的吧。我的学习过程绝对不是半天能熟练掌握的。也许这就是差距吧。
言归正传。准备实现一个功能,需要一个form表单,里面有一个radio来供选择注册人员的性别。对于一个web人员,这太简单了,但是我却在使用freemarker的过程中折腾了半天。传统的方法是这样的
<input type="radio" name="sex" id="sex2" value="2"/><label for="sex2">男</label>
<input type="radio" name="sex" id="sex1" value="1" checked="checked"/><label for="sex1">女</label>
如果通过freemarker来实现的话,官方的文档上是这样描述的
<@ww.radio name="sex" list="sexlist" />
sexlist是一个list,如果是<key,value>结构的话,那么list的key将作为value,而value作为radio的label,这样就能实现以上的功能。除此基础外,还需要当用户选择后,如果跳转回该页面,radio相应的选项被选中。这样的功能,应该注意以下两点:
1、在action中构造一个HashMap,将这个HashMap作为radio中的list,这样系统将自动将HashMap的key作为radio的value,而把value作为label出现,如果构造一个list的话,radio的value和label将是相同的值。
2、注意map的key是一个String类型,这一点搞的我浪费了很长的时间,当想实现radio相应的选项被选中这个功能时,如果你传过去的值是一个其他类型的值时,radio选项被选中这个功能就没办法实现了。这点太难察觉了。这时才明白robbin关于freemarker三重罪的第二点。
分享到:
相关推荐
在处理Freemarker模板引擎时,中文乱码问题是一个常见的挑战,尤其是在国际化应用中。Freemarker是一款功能强大的模板引擎,被广泛应用于Web开发中,用于动态生成HTML、XML等文本格式的页面。然而,当涉及到非英文...
要开始在Struts2中使用FreeMarker模板,首先需要将`freemarker-2.3.8.jar`库文件导入到你的项目的`WEB-INF/lib`目录下。这个库包含了FreeMarker模板引擎的所有必要组件。然后创建一个新的web工程,例如`...
3. 通用数据模型:FreeMarker不直接反射到Java对象,而是通过插件式对象封装,以变量方式在模板中显示。 4. 为Web准备:内建处理典型Web相关任务,能够集成到Model2 Web应用框架中作为JSP的替代,支持JSP标记库。 5....
Freemarker是一个强大的模板引擎,主要用于生成HTML或其他类型的文本输出,尤其在Web应用开发中广泛使用。它是一种基于Java的开源技术,允许开发者通过简单的模板语言(Template Language)与数据模型相结合,动态...
通过阅读和理解FreeMarker 2.3.23的官方中文文档,开发者能够熟练掌握FreeMarker的使用技巧,从而在Web应用开发中更加高效地创建和管理动态内容。这份文档详尽地涵盖了FreeMarker的各个方面,无论是初学者还是经验...
根据提供的文件信息,我们可以深入探讨FreeMarker的相关知识点及其在网页模板设计中的应用。FreeMarker是一种用Java编写的模板引擎,其主要用途在于帮助开发者高效地生成动态内容,尤其是在Web开发领域有着广泛的...
本篇文章将深入探讨如何在Java中使用FreeMarker生成带有盖章的PDF合同文件。 首先,让我们了解FreeMarker的基本概念。FreeMarker是一个基于模板的语言,它与Java代码分离,允许开发者用简单的模板语法来表示数据。...
本实例将详细介绍如何在Freemarker中遍历list集合,帮助你理解和应用这一核心功能。 在Freemarker中,遍历list集合主要依赖于`<#list>`指令。当你有一个Java对象,例如一个ArrayList或LinkedList,这些对象在...
在Struts2中使用FreeMarker,主要涉及以下几个核心概念和步骤: 1. **配置FreeMarker**: - 在Struts2的配置文件(通常为struts.xml)中,你需要指定FreeMarker作为默认的视图技术。 - 配置FreeMarker的路径,...
这通常是通过`Configuration`对象的`setSharedVariable`方法完成的,将你的自定义指令类实例绑定到一个特定的名字,这个名字就是你在模板中使用的标签名。 3. 使用自定义标签:在模板文件中,你可以像使用内置标签...
2. 变量与数据模型:在Freemarker中,变量是由`${}`包裹的,它们从Java对象(数据模型)中获取值。数据模型是Java对象的集合,可以是Map、POJO或Spring MVC中的ModelAndView。 3. 标准指令:Freemarker提供了一系列...
2. **数据模型(Data Model)**:数据模型是应用程序提供给FreeMarker的数据源,它包含了要在模板中展示的变量和对象。这些数据可以是Java对象、集合、Map等。 3. **模板语言(Template Language)**:FreeMarker的...
- **数据模型**:Freemarker模板与应用程序的数据模型进行绑定,模型中的数据可以在模板中被引用和展示。 - **分离关注点**:Freemarker遵循MVC设计模式,负责视图部分,将业务逻辑和表现层分开,使代码更易于维护...
Freemarker是一款强大的模板引擎,常...通过详细研读这份教程,开发者不仅可以掌握Freemarker的基本使用,还能深入理解其高级特性和优化技巧,从而在实际工作中更高效地生成静态文件,提升Web应用的性能和用户体验。
这篇名为“初试FreeMarker模板的一些问题”的博客可能涵盖了在学习和使用FreeMarker过程中遇到的基础问题和解决方法。 1. **模板语言基础** FreeMarker使用模板语言来定义如何将数据模型渲染成可读的输出。模板由...
- **模板内容**:示例中使用`${...}`包裹的占位符作为FreeMarker指令,将在渲染时被相应的数据替换。 - **数据模型**:定义了一个包含用户名称和最新产品的数据模型,该模型由开发者创建并通过FreeMarker传递给...
freemarker常用使用文档......................................................................
在Java项目中,通常将这个jar包添加到类路径(classpath)中,以便在程序中使用FreeMarker的API创建和处理模板。 总的来说,这份资源提供了全面的学习FreeMarker的资料,无论是初学者还是经验丰富的开发者,都能...
这有助于开发者更好地理解和使用文档,以及在遇到问题时如何寻求帮助。 这份文档的内容覆盖了FreeMarker模板引擎的各个方面,不仅适合初学者阅读,也为有经验的开发者提供了详尽的参考资料。无论是进行简单的模板...