前一段时间看上了JSF所以就试着用jsf来写我的个人网站,写到现在一半多了,对他的怨念越来越强了!希望有哪一位高人可以帮我解脱下。
首先,jsf号称组件化编程,但在页面生成的阶段跟本没办法根据我的要求来增删改组件,这是我最大的怨念。jsf在生命周期的最前端“restore view”时生成了一个组件树,可这个组件树和后来的生命周期“render response”根本就不是相同的组件树,所以,你在组件树中的操作最多只能带到“invoke appllication”中,根本就对他的显现没什么关系,因为在组件树生成阶段他根本就不知道要显现的页面,他只会生成用户请求的组件树。这个组件树,应该是已经被序列化在HTML中的一个"hidden input"中。我在许多应用中还挺想用这个特性的,例如:对权限的设计的时候,想根据配制来显示和不显示组件,目前看来,这种方法也不能实现了。想根据一个配制文件去动态生成一个页面,这种应用,也不知要如何下手了。
其次,在标准的实现在,他的校验的组件,竟然没有javascript校验也没有ajax的方式来做校验,他只能根据用户的提交做服务器端的校验,在一此非业务逻辑的校验,在客户端能较验出来就好,因为一个EMAIL格式不对,再从,服务那里返回来,这好像说不过去点。这一点还好,我看到 了“ADF”他的组件库里,可以实然在客户端的较验,可我还没有把他加到我的应用中来。所以好不好用还不好说。
第三,以前,总觉得,asp.net有一个state view自动在客户端保存着让人很不爽(这是我个人觉得,以前刚用的时候不惯吧),现在没想到jsf 比asp.net更狠,用了两个hidden input。一个放state,一个放组件树,晕死,虽然可以放在session中,但总得还是有点不爽。
第四,在标准实现在,jsf竟然没有办法和jslt混用,jsf的运行期和jsp的,有很多地方不同,所以没有办法,在使用jslt的时候使用jsf自带的标签。想想jslt多常用啊,在许多不能用标准组件,又不想自己写组件时是十分有用的。在当时我没有使用facelets时,为了使用jstl还做了还用了很土的方法,用自己写的一段javascript来代替jsf组件。不过,如果你用的是jsf1.2那你就不会有这个怨念了。
总之,这就是我对JSF的怨念,除了第一个没有办法解决以外,其他的都已经有很好的解决办法。
首先,jsf号称组件化编程,但在页面生成的阶段跟本没办法根据我的要求来增删改组件,这是我最大的怨念。jsf在生命周期的最前端“restore view”时生成了一个组件树,可这个组件树和后来的生命周期“render response”根本就不是相同的组件树,所以,你在组件树中的操作最多只能带到“invoke appllication”中,根本就对他的显现没什么关系,因为在组件树生成阶段他根本就不知道要显现的页面,他只会生成用户请求的组件树。这个组件树,应该是已经被序列化在HTML中的一个"hidden input"中。我在许多应用中还挺想用这个特性的,例如:对权限的设计的时候,想根据配制来显示和不显示组件,目前看来,这种方法也不能实现了。想根据一个配制文件去动态生成一个页面,这种应用,也不知要如何下手了。
其次,在标准的实现在,他的校验的组件,竟然没有javascript校验也没有ajax的方式来做校验,他只能根据用户的提交做服务器端的校验,在一此非业务逻辑的校验,在客户端能较验出来就好,因为一个EMAIL格式不对,再从,服务那里返回来,这好像说不过去点。这一点还好,我看到 了“ADF”他的组件库里,可以实然在客户端的较验,可我还没有把他加到我的应用中来。所以好不好用还不好说。
第三,以前,总觉得,asp.net有一个state view自动在客户端保存着让人很不爽(这是我个人觉得,以前刚用的时候不惯吧),现在没想到jsf 比asp.net更狠,用了两个hidden input。一个放state,一个放组件树,晕死,虽然可以放在session中,但总得还是有点不爽。
第四,在标准实现在,jsf竟然没有办法和jslt混用,jsf的运行期和jsp的,有很多地方不同,所以没有办法,在使用jslt的时候使用jsf自带的标签。想想jslt多常用啊,在许多不能用标准组件,又不想自己写组件时是十分有用的。在当时我没有使用facelets时,为了使用jstl还做了还用了很土的方法,用自己写的一段javascript来代替jsf组件。不过,如果你用的是jsf1.2那你就不会有这个怨念了。
总之,这就是我对JSF的怨念,除了第一个没有办法解决以外,其他的都已经有很好的解决办法。