JSF的最佳实践是什么?

我以前做过Java和JSP编程,但我是Java Server Faces的新手,想知道是否有一套JSF开发的最佳实践。

一些提示:了解JSF请求生命周期以及各种代码所在的位置。 特别要找出为什么如果存在validation错误,您的模型值将不会更新。

选择一个标签库,然后坚持下去。 花点时间确定您的需求并对不同的库进行原型设计。 混合不同的taglib可能会对您的心理健康造成严重伤害。

我强烈建议让具有JSF经验的人领导您在JSF的第一个项目,即使这意味着向承包商支付了3个月的费用。 JSF方法与JSP非常不同。 你接近和解决问题的方式是非常不同的。

图书馆

考虑以下库:

  • RichFaces的
  • 页岩
  • 特立尼达
  • 弹簧

建筑

拥抱MVC你不仅需要知道这意味着什么,还要广泛使用它。

将控制器与视图相关联有两种主要模式

Dot Net Style,每个视图一个请求控制器

每个顶级页面都有一个请求作用域控制器(bean),所有页面的validation和操作都使用此类。 也用于过滤和订购模型。 模型将存储在几个会话级控制器上,这些控制器将处理与后端(EJB或持久层)的通信,这些会话控制器应该实现业务逻辑,并且不了解JSF,HTML或任何表示技术。

控制器是会话级别的

根据您的数据模型设计控制器,将它们相互嵌套。 (这个post太长了所以我不会进入这些的细节)。

需要知识

大家:

  • 生命周期
  • MDC
  • 基于组件的开发
  • h:和f中的标签:

至少一个人:

  • 创建自定义组件
  • JSF的限制(后退按钮,随机导航等)
  • 调试第三方库(至少有一个人必须舒服地打破调试器并进入JSF的实现(最简单的开源实现,如MyFaces))

考虑使用facelets – 它极大地简化了JSF开发的最糟糕部分。 我正在做一个基于CMS的JSF项目,现在没有facelets(在用它做项目之后),感觉就像我的左臂缺失了….

  • 添加我对facelets的投票。 我最近升级了一个使用facelets的项目,它解决了jsf的一些大问题,特别是为你提供一个体面的模板系统,让你在适当的时候使用标准的html,而不是“逐字”包装它标签都有效。
  • RestFaces是许多人抱怨的get / post问题的解决方案。 它也有很好的文档和易于使用。
  • 不要使用许多taglib。 它使升级时的工作变得更加困难。
  • SEAM收集了许多JSF最佳实践,但我还没有使用它,所以我不能真正推荐它,只是建议你去看看它。

我一直在使用JSf的IBM实现并且有一些评论。 这不是一个坏的方法,但你必须承诺IBM的“生活方式”。 他们编写了自己的标记lib,扩展了JSF标准。 如果您可以设法留在Rational Application Developer(RAD)(通常不会更新),那么集成有时会出错,但整体还是不错的。 此外,与WebSphere的集成非常好。 除非您的雇主与IBM打高尔夫,否则我认为最好尽可能保持香草。

我还不知道跨领域/表单级别validation的“最佳实践”。

也就是说,JSFvalidation目前面向单场validation。 当您查看复杂的交叉字段/表单级别validation时,IMO会变得很丑陋。

旧的,但仍然看起来很熟悉http://weblogs.java.net/blog/johnreynolds/archive/2004/07/improve_jsf_by_1.html

http://www.jroller.com/robwilliams/entry/jsf_multi_field_validation_not

您可以在以下链接中查看您可以找到有趣文章的位置

http://www.jsftutorials.net/

选择一个好的组件库。不要使用richfaces,我建议你不要使用jsf,在rest架构中使用spring mvc,jquery来自view和json。 但如果必须,使用primefaces它易于使用,并有足够的组件。