http://developer.51cto.com  

我目前的项目前端使用的是JSF+Seam框架,目前项目已经进入尾声,我想把一些心得体会给大家说说,以便大家在使用JSF的时候,少走弯路。

1.异常处理问题:请为JSF加入Seam框架,看看Seam框架 - 无缝集成JSF,共三部分,里面告诉了你怎么在servlet容器下配合spring使用Seam,Seam不是一定要在ejb3和jboss下才可以使 用。因为单独使用JSF的话她的异常处理功能很简陋,跟踪不到你想看的地方,对于开发很不方便,你只有打开日志才能看到问题所在,而Seam在加入 phase-listener以后,对JSF不同的生命周期都进行了功能增强,即使不使用Seam任何的功能,她也能毫无保留的输出所有的异常栈。

2.css问题:如果你想在你的项目中使用JSF,css太重要了,很多刚开始使用JSF的人都不是很习惯JSF基于块结构开发页面,因为JSF让 你注意的是内容展现的结构,而不是内容展现的样式,这是完全符合w3开发html的初衷,大家使 用<table><tr>< td>来做页面展现布局,其实是错误已久的方法,如果在JSF中能了解如何使用css进行布局,JSF不适合复杂页面设计这句话就不攻自破了。

3.细心的使用dataTable组件,数据列表是最常用的页面组件,但是我毫不留情的说JSF的dataTable组件的实现简直太滥了,它就是 JSF 开发一大祸根。没有很方便的解决特定行样式显示的问题,没有解决回退按钮风险问题,没有dataScroll和dataTable组件进行数据库分页的优 雅办法,数据提交的幻影问题,我的开发很多时间用在了dataTable的和其他组件块融合上面。不过JSF1.2通过统一el,加入了对jstl的 foreach标记的支持,我虽然还没有使用,但是我认为这有可能成为数据列表开发的一个有力补充。

4.建议把JSF的模型bean和后台的业务bean合二为一,这样可以在前端提交页面与模型绑定的同时,完成业务bean的数据封装,并且交由服 务层处理一气呵成。这样做有个好处,就是我们会想方设法通过各种手段在第一时间就完成模型bean对业务bean的封装,消除服务层对dto的依赖。这样 是可行的,因为JSF的页面绑定机制提供了很好的帮助。

5.请考虑多的使用convert组件,比如列表页面有个radio块,提交radio值就是一个int数值,然后在展现逻辑去恢复这个radio 值对应的业务模型,这样增加了展现逻辑处理页面数据的负担,而且不好管理,如果把这个工作放在自定义的convert中,让convert在页面上显示 int数值,在提交上寻找对象,那么页面和服务层就屏蔽了这样的工作,看到的都是对象的进出。

6.我使用了myfaces一个自己的组件<t:updateListener>,就是跨页面专递参数,非常好用,刚使用JSF的朋 友,可以看到跳转的下一个页面用它怎么做,但是建议传递模型对象,不要传递数值,你使用JSF就是因为她是基于对象考虑页面设计的。

7.小心使用session来处理JSF,JSF过多的使用了session,但是我可以肯定一点,展现层一定是需要基于状态的方式来做的,这样可 以简化开发,无状态的方式会带来更多的无序代码。不是每个人都是高手。可以考虑使用Seam的conversation来处理,她的长会话特别适合业务编 辑,默认的短会话会填补JSF有时容易丢失的短期数据。

8.调试JSF的问题:有时你使用JSF想知道你的数据在哪个阶段变化了,你不会把JSF代码加入到自己的工程中来调试把,请加入自定义的phaseListener,继承phaseListener这个接口,你可以在把你的程序设置在任何阶段跳出来进行调试。

9.分页的问题:在google搜一下,有个http://www.blogjava.net/steady/archive/2005/12 /30/26013.aspx提供了分页的方式,我就在使用,这是目前最可能的方式了把,呵呵,不过要注意她使dataTable的values直接使用 了dataModel,她与Seam的@dataModel是不兼容的,所以不能使用Seam的@dataModel功能,需要使用get方式了。

10.如果想使用ajax4JSF等ajax框架,你需要使用facelet,让页面成为标准的xhtml,记好了,不要写了一大堆才发现这个问题。

11.如果你在dataTable列表页面使用了radio的话,你还想在列表上做一些link操作,一定要在操作上加入immediate= true,否则在没有选择radio的情况下她是不会让你过去的。并且列表中要使用selectBooleanRadio,而不是 selectOneRadio或者selectManyRadio。checkbox也是一样。

12.对于doGet的方式请使用Seam的<s:link>组件。

13.如果你导入了其他页面,而没有使用facelet的话,那么导入的那个页面就要完全符合JSF组件的渲染方式,混合html会解析不出来。反 过来在主页面应该尽量多使用JSF标记与html混合的方式,这样可以使开发变得简单,尽管有时候JSF会很丢丑,你试试每个html组件都有个 render属性就知道了。JSF1.2已经把混合的html作为一个output组件来输出,可以和JSF组件兼容,是件好事。对于混合html这种方 式,我想说你关注的是JSF组件和模型的关系,而不一定页面都得是JSF组件标记。

14.不要相信JSF运行的速度慢,JSF虽然在树形组件处理上,每一个阶段都经历了递归遍历,但是要相信JSF依然很快,我现在的系统很快,如果你使用后很慢那是项目产生了问题,而不是框架的产生了问题。

15.相信JSF一定是下一代表现层的王者,这很重要。

原文链接: http://blog.csdn.net/vanessa219/article/details/4314317

转载于:https://my.oschina.net/chen106106/blog/44394

JSF+Seam框架学习心得相关推荐

  1. eggjs框架学习心得

    前言: eggjs作为阿里开源的企业级 Node.js 框架,其官网教程https://eggjs.org/zh-cn/tutorials/index.html介绍的很详细,可以帮助初学开发者快速搭建 ...

  2. Seam框架学习之一(Seam vs Spring -- state vs stateless)

    Seam是JBoss 的新的框架,号称Java的ROR.下面我想对它的一些特性和Spring做一番比较. Seam的概念是基于Component的,集成了JSF+EJB3.0以及它选用的AJAX框架A ...

  3. 实训小结---Java框架学习心得

    学习小结 为期两个星期的实训结束了,在这两周的时间里,我学到了不少之前没有接触过的知识,这也是我第一次正式接触前端后端的开发.在学习开发的过程中,出现过不少问题,自己能够解决的.自己不能解决的都有,下 ...

  4. SpringSecurity安全框架学习心得,避免踩坑。

    最近有一个项目需要用到SpringSecurity安全框架,特意简单学习了一下,中间也踩了很多坑,在这里记录一下避免以后踩坑. 1.引入: 在很多的项目中,都会遇到认证问题,就是管理员与用户等不同角色 ...

  5. JBoss Seam框架

    JBoss Seam框架简单介绍 一.Seam适应快速开发.简化框架的趋势 在RoR流行之前,Java社区的主流还是非常讲究分层.架构.复用和模式,而比较忽视快速开发和简化架构的,其结果就是代码量大. ...

  6. Java EE学习心得

    –Java EE学习心得   1.    称为编程专家的秘诀是: 思考-----编程--------思考------编程--.. 编程不能一步到位,不能一上来就编,必须先思考如何写,怎样写?然后再编程 ...

  7. Assembly学习心得

    http://blog.csdn.net/etmonitor/ Assembly学习心得 说明: 最近开始准备把学到的.NET知识重新整理一遍,眼过千遍不如手过一遍,所以我准备记下我的学习心得,已备参 ...

  8. 好程序员Web前端教程分享Vue学习心得

    为什么80%的码农都做不了架构师?>>>    好程序员Web前端教程分享Vue学习心得,Vue是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向 ...

  9. JEPLUS学习心得之请假单功能的完成——JEPLUS软件快速开发平台

    为什么80%的码农都做不了架构师?>>>    JEPF软件快速开发平台学习心得之请假单功能的完成(一) 首先我也是点一次接触这个软件快速开发平台,我在学习这个平台的同时简单记录下我 ...

最新文章

  1. Android性能优化工具
  2. 报名|PMCAFF原创专栏作者百人计划
  3. 团队作业10——复审与事后分析(Beta版本)
  4. Linux 环境 zookeeper集群安装、配置、测试
  5. 如何在后台配置中找到某个具体配置的事务码
  6. 删除行对MySQL序列有这么多影响?
  7. 【Elasticsearch】Elasticsearch 分布式一致性原理分析:元数据
  8. 解决 ImportError: No module named 'pip._internal'问题
  9. datagridview 纵向 横向 合并单元格_Excel横向(行)筛选技巧分享,别人3分钟,你只要10秒...
  10. TypeError 之 Cannot convert undefined or null to object
  11. 吴昊品命令行解释程序 Round 2 —— 一个带括号的四则运算表达式的解释器(逆波兰式RPN)...
  12. TOGAF9.2企业架构师考试小记
  13. 清华大学朱小燕教授做客雷锋网沙龙,分享 NLP 和人工智能的那些事儿| AAAI 2017...
  14. 改图宝,快速修改图片大小
  15. 人工智能如何可以思考?
  16. 移动互联网创业者遭遇巨头模仿蚕食
  17. C#进阶系列——使用Advanced Installer制作IIS安装包(一:配置IIS和Web.config)
  18. Android基础课程:第三方视频播放器(播放网络资源)
  19. 格式为[区号-座机号-分机号]的座机号校验正则
  20. 面试培训机构里的教师时,一分钟的自我介绍和五分钟的试讲如何安排?需要注意什么?

热门文章

  1. 公司内部Wiki,你建立了么?
  2. CC2530 ZigBee自组网模块
  3. 计算机视觉领域的一些大牛网站
  4. ERP项目中的后期运维研究
  5. 解决Mac平台下移动硬盘无法识别且急救失效问题
  6. SuperMap iMobile for Android 地图开发在线地图服务接入(二)
  7. 刘一男词汇课(从adult到apparent):书上有路勤为径,学海无涯“懂“作舟
  8. 史上最完整的网站运营推广方案样板示例
  9. 让个人电脑也拥有一把保护伞—个人防火墙(转)
  10. 怎样创建淘宝鱼塘,怎样利用鱼塘拉新,怎样利用鱼塘管理好老客户?