JSF与普通的JSP + Beans?

时间:2011-01-12 18:28:06

标签: jsp jsf servlets java-ee javabeans

我可以选择在JSF或JSP中执行下一个项目。其他语言/框架不是一种选择。

我不想使用RichFaces,IceFaces等任何可视化组件库,因为过去我的体验非常糟糕,所以我会成为樱桃 - 挑选jQuery组件来完全我希望他们做什么。

同样,我也不会为数据访问组件而烦恼。

此外,由于 JSF对JSP有很多限制(例如不支持GET,不能避免有状态等),我正在考虑一直使用JSP + Beans。

JSF还有其他什么东西会遗漏吗?

1 个答案:

答案 0 :(得分:1)

你所说的限制并不存在。 JSF绝对支持GET。事实上它总是支持这一点,尽管有一些限制。你所做的是将#{param.some_id}注入你的bean并在@PostContruct注释方法中执行一些操作。

使用JSF 2.0,这种支持已经大大扩展,您可以将标准验证器和转换器附加到它们,这是您在JSF 1.x中无法做到的。

JSF的优点很多,但是在进行简单的JSP开发时我错过了一个特别的事情就是拥有一个可用的转换器和验证器库。无论你做什么样的Web开发,无论你的客户端代码多么花哨,最终都必须在服务器上执行一些操作,然后你必须进行转换和验证。

使用JSF,您可以轻松构建自己的转换器和验证器库,或从许多已有的库中进行选择。使用bean验证(Java EE 6),可以将其提升到下一个级别:使用约束注释您的实体,JSF将在UI中为您强制执行这些操作。 (请注意,JSF本身不包含bean验证,但它支持它)。

然后我还发现,使用简单但有效的模板语言会非常有帮助。即使您只使用很少或根本没有JSF组件,您也可以创建主模板页面,拥有模板客户端,并将基于jQuery的javascript和HTML放在可以在服务器端轻松重用的块中。 JSP实际上只有jsp:include用于模板化,这是相当有限的。

JSF的另一个小问题是,您可以轻松地以编程方式访问与当前请求相对应的请求和响应对象。如果你没有利用JSF的许多核心功能,那么在JSP / Servlet风格编程中,这可能是一个很小的优势。

但是正如BalusC已经指出的那样,也许JSF不适合你。最大的好处是将框架用于其组件时。如果您不打算使用这些,基于某些请求可能更适合您。