`
yezi
  • 浏览: 276228 次
  • 来自: 北京
社区版块
存档分类
最新评论

关于在freemarker中使用radio tag遇到的问题

阅读更多
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三重罪的第二点。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics