`
JessicaCao
  • 浏览: 35667 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

关于jsf 的标记库

阅读更多

  对于标记库,不想再说些什么了。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有优势多了。
分享到:
评论

相关推荐

    JSF Java Server Faces (JSF)框架

    JSF(Java Server Faces)技术为开发基于网络用户界面的Java开发者提供了标准的编程接口API以及标签库。就像Struts框架一样,JSF定义了一套JSF标签 JSF的全称  1、Joint Strike Fighter (JSF)  2、Java Server ...

    jsf教程 JSF为JAVA的 Web应用用户界面

    JSF为JAVA的 Web应用用户界面的开发人员提供了标准的编程接口、丰富可扩展的UI组件库(一个核心的JSP标记库用来处理事件、执行验证以及其他非UI相关的操作和一个标准的HTML 标记库来表示 UI组件)、事件驱动模型等...

    JSF开发文档

    JSF为JAVA的 Web应用用户界面的开发人员提供了标准的编程接口、丰富可扩展的UI组件库(一个核心的JSP标记库用来处理事件、执行验证以及其他非UI相关的操作和一个标准的HTML 标记库来表示 UI组件)、事件驱动模型等...

    JSF 初级入门教程

    JSF为JAVA的 Web应用用户界面的开发人员提供了标准的编程接口、丰富可扩展的UI组件库(一个核心的JSP标记库用来处理事件、执行验证以及其他非UI相关的操作和一个标准的HTML 标记库来表示 UI组件)、事件驱动模型等...

    JSF入门深入学习WORD版

    Web应用用户界面的开发人员提供了标准的编程接口、丰富可扩展的UI组件库(一个核心的JSP标记库用来处理事件、执行验证以及其他非UI相关的操作和一个标准的HTML 标记库来表示 UI组件)、事件驱动模型等一套完整的Web...

    jboss as 7 support jsf2.2.1 modules

    对于像JSF这样基于组件的库,上述情况带来一个问题:为了识别新属性,所有已有的组件必须更新。对于需要显式支持这些属性的组件而言,的确如此。但在很多情况下,组件只需要在最终生成的标记中包含这些属性即可。JSF...

    核心 JSF 编程(CHM).rar

    软件介绍 告诉你如何构建更强劲的应用而不用乏味的手写代码;回答多数开发者甚至不会问的问题;演示如何使用JSF和Tiles自动构建一致的...覆盖全部JSF标记和如何创建新的标记库,英文,原名称:Core JavaServer Faces

    Tagext:一组 jsf facelets 标记处理程序,用于简化标记组件声明定义

    标签文本类似于标准 JSF 复合 API 的库。 它基于 Mojarra 实现,不支持 Myfaces。 与标准复合组件不同,它: 不会在 JSF 组件树中创建新的组件节点允许将非组件标签包装为 &lt;p&gt; 或转换器Tagext 库的主要目的是以与 ...

    jsf-sample:javaserver面临的例子

    JavaServer Faces 带有PrimeFaces,Hibernate和Maven的JavaServer Faces。 目录 恢复 ... 标记库,用于将组件添加到网页以及将组件连接到服务器端对象。 JavaServer Faces技术提供了定义明确的编

    蝙蝠在线考试系统v2.2.6 JSF2+SPRING+JPA

    蝙蝠在线考试系统基于JSF2、Spring3、JPA2等JAVA技术构建,系统使用MYSQL数据库,可以部署于WINDOWS、LINUX、UNIX等各种操作系统,内置了无处不在的AJAX能力,简洁易用,支持单选题、多选题、填空题、判断题、问答题...

    weld-jsf-pastecode-1.1.13.Final.zip

    Laika.zip,用于将轻量级文本标记转换为各种类型的输出格式的库,用scala text标记转换器为sbt和scala应用程序编写,将markdown和structuredtext转换为html、epub和pdf

    JBoss Seam 工作原理、seam和hibernate的范例、RESTFul的seam、seam-gen起步、seam组件、配置组件、jsf,jboss、标签、PDF、注解等等

    Seam - 语境相关的组件[满江红20071230]..........................................................................1.6.4. Seam 的UI 控制库........................................................................

    C#课程设计-C#大作业基于ASP.NET技术的动漫管理系统源码(老司机驾驶舱).zip

    通过razor页面的前端标记库实现表现层,它调用背板代码提供的对象实现数据绑定。 本应用还包含一些额外的技术内容: 文件系统读写 读取压缩包 高质量缩略图生成 架构 主要包含以下技术要点: dotnet - 应用开发...

    Jakarta Struts 编程.rar

    第二版增加了新的章节来专门探讨安全、与JSF API的集成、JSP标准标记库(JSTL),以及Struts的表达式语言(EL)。此外,第二版对第一版中原有的主题也做了扩充。对于每一个自己所开发的企业系统,本书作者Chuck ...

    Java资源包01

    使用该标记库,利用 Google 为你的网站提供网站查询,并且可以直接在你的网页里面显示搜查的结果。 github-java-api github-java-api 是 Github 网站 API 的 Java 语言版本。 java缓存工具 SimpleCache ...

    java web 开发详解

     优点: 架构简单——易于扩展 标记库很容易利用FreeMarker或者Velocity来定制 基于控制器或者基于页面的导航 缺点: 文档组织得很差 对新特征过分关注 Tapestry  优点: 一旦学会它,将极大地提高生产率 HTML模板...

    oportunidades-ufba

    UFBA机会开发环境文档1 - 在 Eclipse 中创建动态项目以使用 JSF 进行配置2 - 右键项目按钮 -&gt; 团队 -&gt; 共享项目 -&gt; Git -&gt; 选中“在项目的父文件夹中使用或创建存储库”选项 -&gt; 选择您的项目 -&gt; 然后单击“创建存储...

    java开源包1

    使用该标记库,利用 Google 为你的网站提供网站查询,并且可以直接在你的网页里面显示搜查的结果。 github-java-api github-java-api 是 Github 网站 API 的 Java 语言版本。 java缓存工具 SimpleCache ...

    java开源包11

    使用该标记库,利用 Google 为你的网站提供网站查询,并且可以直接在你的网页里面显示搜查的结果。 github-java-api github-java-api 是 Github 网站 API 的 Java 语言版本。 java缓存工具 SimpleCache ...

    java开源包2

    使用该标记库,利用 Google 为你的网站提供网站查询,并且可以直接在你的网页里面显示搜查的结果。 github-java-api github-java-api 是 Github 网站 API 的 Java 语言版本。 java缓存工具 SimpleCache ...

Global site tag (gtag.js) - Google Analytics