Seam全称是Jboss Seam,是一个Java EE 5框架。JSF是一种标准的 J2EE 表示层的技术,其主旨是为了使 Java 开发人员能够快速的开发基于 Java 的 Web 应用程序。
创新互联凭借专业的设计团队扎实的技术支持、优质高效的服务意识和丰厚的资源优势,提供专业的网站策划、成都网站建设、网站设计、网站优化、软件开发、网站改版等服务,在成都十年的网站建设设计经验,为成都上千多家中小型企业策划设计了网站。
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的初衷,大家使用< 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的组件
我使用了myfaces一个自己的组件,就是跨页面专递参数,非常好用,刚使用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的组件。
13. 如果你导入了其他页面,而没有使用facelet的话,那么导入的那个页面就要完全符合JSF组件的渲染方式,混合html会解析不出来。
反过来在主页面应该尽量多使用JSF标记与html混合的方式,这样可以使开发变得简单,尽管有时候JSF会很丢丑,你试试每个html组件都有个 render属性就知道了。JSF1.2已经把混合的html作为一个output组件来输出,可以和JSF组件兼容,是件好事。对于混合html这种方式,我想说你关注的是JSF组件和模型的关系,而不一定页面都得是JSF组件标记。
14.不要相信JSF运行的速度慢
JSF虽然在树形组件处理上,每一个阶段都经历了递归遍历,但是要相信JSF依然很快,我现在的系统很快,如果你使用后很慢那是项目产生了问题,而不是框架的产生了问题。
希望通过本文的介绍,能够给你带来帮助。
当前名称:经验分享:seam+jsf开发心得
转载注明:http://www.shufengxianlan.com/qtweb/news24/135074.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联