`
yanhua
  • 浏览: 88786 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

JSF2.0——编写复合组件更容易

阅读更多

使用过JSF的人都知道,编写一个JSF组件是多么的复杂——tag类和tld、renderer、uicomponent……复杂的生命周期还有一堆的配置,真是让人望而却步。组件很难扩展是一个面向组件的框架的致命缺点,因为不管标准的组件库和第三方的组件库有多少多很难穷尽所有的需求。

 

更何况有时候我们只是想把几个已经存在的组件稍微组合一下或者加一些特定的约束就得到一个新的复合组件了,这个需求本来就很简单,但是你要定义自己的JSF组件就太复杂了,显得不值得了。以前最好的解决办法就是使用facelets了,不过JSF2.0中也提供了类似的功能,只要一个文件就搞定了。

 

加入我们定义一个输出组件,它输出的文字总是黄色的,可以这样使用:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:ez="http://java.sun.com/jsf/composite/simpleout">
<h:head>
    <title>Yellow Text Example</title>
</h:head>
<h:body>
        <h1>Output Text Example</h1>
        <h:form id="form1">
                <ez:out value="Test Value"/>



            <p><h:commandButton value="reload"/></p>
            <h:messages/>
        </h:form>
</h:body>
</html>
 

那下面就是定义这个组件的文件:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:composite="http://java.sun.com/jsf/composite">
<head>
<title>This will not be present in rendered output</title>
</head>
<body>

<composite:interface>
    <composite:attribute name="value" required="false"/>
</composite:interface>

<composite:implementation>
    <h:outputText value="#{compositeComponent.attrs.value}" style="background-color: yellow"/>
</composite:implementation>
</body>
</html>
 

简单吧?

 

参考:

Writing a simple Composite Component with JSF 2.0

 

 

 

分享到:
评论
4 楼 pujialei 2010-01-11  
myeclipse加了jaf2 mojarra实现的2个包,能运行,但是myeclipse不提示标签。怎么办 就是我输入<h后alt+/不给head 这样的
3 楼 liyaxi 2009-02-15  
visual web jsf 用过吗!
那才
2 楼 yingfang05 2009-02-14  
看上去的确有了不错改进
1 楼 fralepg 2009-02-09  
 

相关推荐

    Mojarra JSF2.0库文件

    Mojarra JSF 2.0是针对JSF 2.0规范的实现库,包含了处理JSF生命周期、渲染组件以及与其他Java EE技术集成所需的所有类和接口。将Mojarra JSF 2.0库文件放置在Web应用的`WEB-INF/lib`目录下,是为了让应用服务器能够...

    JSF2.0实战 - 6、TextBox

    6. **自定义组件**:如果你需要更复杂的输入组件,JSF 2.0允许你创建自定义组件。这通常涉及创建一个新的Facelet组件、对应的后台组件类以及可能的样式和脚本资源。 在实践中,你可能还会遇到如何处理TextBox的转换...

    JSF2.0源代码

    **JSF 2.0 源代码详解** JavaServer Faces (JSF) 是一个用于构建Web用户界面...总的来说,JSF 2.0的源代码是开发者提升技能、解决实际问题的宝贵资源,通过深入学习,我们可以更好地利用JSF构建高效、健壮的Web应用。

    jsf2.0版本helloworld

    本例中的"jsf2.0版本helloworld"就是一个基础的入门示例,旨在展示如何在MyEclipse环境中配置和运行一个简单的JSF应用。 **JSF 2.0的关键特性** 1. **Faces Flow**: JSF 2.0引入了Faces Flow,这是一种新的导航模型...

    jsf 2.0 api和imp的jar包+源码包+doc

    API jar包是JSF 2.0的核心接口和抽象定义,它定义了各种组件、事件、监听器和生命周期方法等。开发者通常会将API jar包添加到项目的类路径中,以便在代码中引用JSF的相关接口和类。通过阅读API文档,你可以了解到...

    jsf2.0实例

    文档《JSF2.0系列简介.doc》可能详细介绍了JSF 2.0的基础知识和实践指导,而压缩包中提供的源代码可能是为了演示如何在实际项目中使用JSF 2.0。这些示例可能涵盖了以下内容: - **创建基本的JSF页面**:展示如何...

    JSF2.0标签手册

    JSF2.0标签手册DQSV

    JSF2.0实战 - 4、自定义组件

    JSF 2.0引入了复合组件的概念,它允许开发者将多个JSF组件和行为组合成一个单一的自定义组件。复合组件定义在独立的.xhtml文件中,可以包含属性、事件和嵌套组件。在使用时,只需引用这个.xhtml文件即可。 7. **...

    jSF2.0与Spring整合实例+教程

    1. **组件模型**:JSF 2.0 提供了一种基于组件的UI开发方式,开发者可以创建、组合和重用UI组件,提高开发效率。 2. **生命周期**:JSF 页面有请求处理的完整生命周期,包括恢复视图、应用请求值、处理事件、更新...

    jsf2.0 文件上传组件

    由于JSF2.0标准实现没有提供文件上传组件,而实际应用中很多时候需要上传文件,为了方便开发,我做了一个基于JSF2.0的文件上传组件,上传使用的是Apache 的commons-fileupload组件,我已经将commons-fileupload-...

    JSF.2.0.最新2010教程

    - **复合组件**:复合组件是JSF 2.0引入的一种新组件类型,可以将多个UI组件封装在一起,形成一个可复用的组件单元。 - **属性继承**:允许子组件继承父组件的属性值,减少了代码冗余。 - **事件模型改进**:提高了...

    JSF 2.0 开发资料

    - **内置组件**:JSF 2.0 扩展了内置组件库,提供了更多的 UI 组件,如数据表格、树形控件等,使得开发者可以更容易地构建复杂的用户界面。 - **自定义组件**:自定义组件的创建变得更加容易,可以通过注解来...

    JSF 2.0 (Mojarra 2.0.2-FCS)

    JSF 2.0中,组件库得到了显著增强,引入了更多的内置组件,如`&lt;h:outputText&gt;`、`&lt;h:inputText&gt;`等,同时支持自定义组件。这些组件简化了视图层的构建,并提供了更好的数据绑定和验证功能。 2. **Facelets作为默认...

    jsf 2.0官方参考手册

    JSF 2.0引入了增强的组件库,包含更多的预定义UI组件,如按钮、表单、输入字段、表格和导航链接。这些组件可以通过XML(Facelets)或JSP进行声明式使用,简化了页面构建。此外,JSF 2.0支持自定义组件,允许开发人员...

    Jsf2.0 Refrence

    "Jsf2.0 Refrence"书籍中的代码示例(jsf2-tcr-code-examples)将帮助读者更好地理解这些概念,通过实际操作加深对JSF的理解。这些例子涵盖了从基本组件使用到复杂应用场景的各个方面,对于学习和实践JSF 2.0非常有...

    JSF2.0实战 - 10、自定义Ajax更新方式

    2. **JSF 2.0的Ajax API**:JSF 2.0引入了`&lt;f:ajax&gt;`标签,它允许开发者声明式地添加Ajax行为到JSF组件上。通过设置`render`、`execute`等属性,我们可以指定哪些组件应该被更新和执行。 3. **自定义Ajax行为**:...

    jsf2.0+jdbc实例

    综上所述,这个"jsf2.0+jdbc实例"涵盖了JSF 2.0组件模型的使用,通过EL进行数据绑定,利用JDBC进行数据库操作,并在Tomcat 6.0上部署和运行。通过学习和实践这个实例,开发者可以深入了解JSF 2.0与数据库集成的基本...

Global site tag (gtag.js) - Google Analytics