闲人野居
好好学习,天天向上
posts - 57,  comments - 137,  trackbacks - 0
  对于标记库,不想再说些什么了。jsf可能最大的毛病都在这个标记库上面,首先定义的标记在jsp中,并不起到相应的输出功能,而只是用来增加相应得组件。在jsf中,最上层的组件为UIViewRoot,基本上所有的操作都是需要围绕着此组件。而标记库的存在,只是为了简化相应的操作。如下的标记:
<f:view>
    
<h:form>
     
<h:panelGrid>
        .   
    
</h:panelGrid>
       
</h:form>
</f:view>

其实对应的java代码,如下:
FacesContext context = FacesContext.getCurrentInstance();
UIViewRoot root 
= context.getViewRoot();
HtmlForm form 
= new HtmlForm();
HtmlPanelGrid grid 
= new HtmlPanelGrid();
form.getChildren().add(grid);
root.getChildren().add(form);

也就是说没有标记库,我完全可以使用java代码完成。
    那么标记库的存在到底有没有意义,意义可能就在于简化相应的操作,想想html的属性是比较多的,如果每个都要用java代码去控制,那么可能对于应用来说,显得很不灵活,因为改代码毕竟没有改jsp来的快。而且代码需要重新编译。所以jsf的标记库存在也是有点意义的。
可是,现在的问题是,由于jsf本身就是规范,其实现也就会各有不同,对于每种实现都会带有自己的那一套标记库,随着标记库的增加,对于使用者来说,也是不堪忍受的重负。所以,有些时候,如果需要动态做一些配置,那么还是丢弃标记库,用java代码来完成吧。当然facelets,提供了一种方式,用于很灵活的扩展多个标记库,可是,看着那么多的标记,总是还有些头疼。

    其次,对于标记库来说,各个标记库的不兼容也是一个很大的问题。就拿jstl和jsf来说,jstl的变量声明,在jsf中肯定是没有办法解析的,同样jsf中的变量,在jstl中也不能认识。我指的是页面声明的变量,而不是session变量,如下的例子:
<h:dataTable styleClass="table-background"
                                 rowClasses
="table-odd-row,table-even-row"
                                 cellpadding
="3"
                                 value
="#{recordBean.records}"
                                 var
="record"
                                 binding
="#{recordBean.recordData}">
   
<c:if test="${record}">
     
   
</c:if>
</h:dataTable>

在dataTable中声明了变量record,但是在jstl中是不会认识的。
    可能这个问题,facelets已经解决了,主要facelets把所有的Elcontext中的变量都结合在了一起,使用自身的FaceletsContext。
不过,如果我只是需要简单的功能,还需要使用facelets,那么也就有点大材小用了。况且facelets也只是提供了类似tiles的功能。
最后,想说的是,虽然jsf目前的ide支持,比其他框架多多了。可惜,人家都是建立在相应的标记库上的,如果你定义了自己标记库,人家不一定会认识。所以标记库的存在,对于jsf来说,也许并不一定是好事情,可能sun觉得如果把jsp抛弃了,有点可惜。所以在升级jsf的同时,也升级了相应得jsp规范。
    个人觉得,也许模版技术,可能也会是一种选择,看看velocity和freemarker,觉得其比jsp有优势多了。

posted on 2007-05-09 20:33 布衣郎 阅读(2776) 评论(4)  编辑  收藏 所属分类: web view技术

FeedBack:
# re: 关于jsf 的标记库
2007-05-10 09:43 | 冲向SOA!
标记库不兼容是比较烦,jsf1.2有所改善。  回复  更多评论
  
# re: 关于jsf 的标记库
2007-05-10 10:57 | Tendy
如果没有标记库
通过 new 操作符创建 component
楼主觉得容易排版么?  回复  更多评论
  
# re: 关于jsf 的标记库
2007-05-10 15:49 | 布衣郎
@Tendy
可能这正是需要我们考虑的,也许使用模板方式,是一个很好的替换方案。不过需要更改jsf的renderer体制  回复  更多评论
  
# re: 关于jsf 的标记库
2012-07-02 09:46 | 马云

只有注册用户登录后才能发表评论。


网站导航:
 

<2007年5月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

常用链接

留言簿(12)

随笔分类(59)

随笔档案(57)

blog

java

uml

搜索

  •  

积分与排名

  • 积分 - 356386
  • 排名 - 155

最新评论

阅读排行榜

评论排行榜