`
Abby_success
  • 浏览: 16974 次
  • 性别: Icon_minigender_2
  • 来自: 重庆
社区版块
存档分类
最新评论

Facelets自定义标签的应用

阅读更多

  最近在用JSF做项目,其中也借用了facelets和richfaces额的相关辅助插件。呵呵,发现facelets的自定义标签真的很方便,所以在此的例子是做的一个基本的分页控件(用于xhtml页面):

1.首先与JSP额自定义标签类似,在web-inf下建立一个pager.taglib.xml的文件,内容大致如下:

  <?xml  version="1.0"  encoding="gb2312"?>
<!DOCTYPE facelet-taglib
  PUBLIC "-//Sun Microsystems, Inc.//DTD Facelet Taglib 1.0//EN"
  "http://java.sun.com/dtd/facelet-taglib_1_0.dtd">
<facelet-taglib>
    <namespace>http://www.bypage.com/page</namespace>
    <tag>
      <tag-name>pager</tag-name>
      <source>pager.xhtml</source>
    </tag>
</facelet-taglib>

 

 

 

2. 要使用自定义的facelets标签,在web.xml中必须做如下配置:
 <context-param>
    <param-name>facelets.LIBRARIES</param-name>
    <param-value>/WEB-INF/pager.taglib.xml</param-value>
 </context-param>
 

 

 

3.配置pager.xhtml的代码:

<?xml  version="1.0"  encoding="gb2312"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:rich="http://richfaces.org/rich"
      xmlns:a4j="http://richfaces.org/a4j"
      xmlns:t="http://myfaces.apache.org/tomahawk"
      xmlns:c="http://java.sun.com/jstl/core"
>

<f:view> 
     记录数:<h:outputText value="#{backingBean.maxItems}" />
    &nbsp;&nbsp;&nbsp;总页数:<h:outputText value="#{backingBean.maxPages}" />
    &nbsp;&nbsp;&nbsp;当前页:<h:outputText value="#{backingBean.pageNumber}" />
  <c:if test="#{backingBean.maxPages gt 0 and backingBean.pageNumber ne 1}">
     &nbsp;&nbsp;
     <h:commandLink action="#{backingBean[action]}" value="首页" >
         <f:param  name="pageNumber" value="1"></f:param>
         <f:param  name="maxPageItems" value="#{backingBean.maxPageItems}"></f:param>
     </h:commandLink>
  </c:if>
  <c:if test="#{backingBean.maxPages le 0 or backingBean.pageNumber eq 1}">
        &nbsp;&nbsp;首页
  </c:if>
     <c:if test="#{backingBean.pageNumber gt 1}">
       &nbsp;<h:commandLink action="#{backingBean[action]}" value="上一页" >
              <f:param  name="pageNumber" value="#{backingBean.prePage}"></f:param>
              <f:param  name="maxPageItems" value="#{backingBean.maxPageItems}"></f:param>
         </h:commandLink>
     </c:if> 
     <c:if test="#{backingBean.pageNumber le 1}">
          &nbsp;上一页
     </c:if> 
  <c:if test="#{backingBean.pageNumber lt backingBean.maxPages}">
          &nbsp;<h:commandLink action="#{backingBean[action]}" value="下一页" >
               <f:param  name="pageNumber" value="#{backingBean.nextPage}"></f:param>
               <f:param  name="maxPageItems" value="#{backingBean.maxPageItems}"></f:param>
           </h:commandLink>
     </c:if> 
     &nbsp;
     <c:if test="#{backingBean.pageNumber ge backingBean.maxPages}">
          &nbsp;下一页
     </c:if>
    
     <c:if test="#{backingBean.maxPages gt 0 and backingBean.pageNumber ne backingBean.maxPages}">
      &nbsp;<h:commandLink action="#{backingBean[action]}" value="末页" >
     
               <f:param name="pageNumber" value="#{backingBean.maxPages}"/>
               <f:param name="maxPageItems" value="#{backingBean.maxPageItems}"/>
      
      </h:commandLink>
     </c:if> 
  <c:if test="#{backingBean.maxPages le 0 or backingBean.pageNumber eq backingBean.maxPages}">
        &nbsp;末页
     </c:if>
  &nbsp;&nbsp;页码:<h:inputText value="#{backingBean.PAGER_pageNumber}" name="PAGER_pageNumber" id="PAGER_pageNumber" size="2" />

     <h:commandLink action="#{backingBean[action]}" value="转到" >
          <f:param  name="pageNumber" value="#{backingBean.PAGER_pageNumber}"></f:param>
       <f:param  name="maxPageItems" value="#{backingBean.maxPageItems}"></f:param>
     </h:commandLink>
        &nbsp;每页:
     <h:inputText  name="maxPageItems" size="2"  id="mpg" value="#{backingBean.maxPageItems}"></h:inputText>
      <h:commandLink action="#{backingBean[action]}" value="显示" >
          <f:param  name="pageNumber" value="1"></f:param>
       <f:param  name="maxPageItems" value="#{backingBean.maxPageItems}"></f:param>
   </h:commandLink>
</f:view>
</ui:composition>


 

4.还有一个基本的bean工具类,有上面xhtml中用的所有属性,和基本的分页方法,一旦按照以上方式定义好以后,就可以在任何的xhtml页面中调用以上定义的facelets标签,可以实现和JSP自定义标签一样便捷的效果!!

 

 

0
0
分享到:
评论

相关推荐

    Web2.0体系学习(自定义标签)

    - Spring Web Flow、JSF等框架也提供了自定义标签的机制,进一步丰富了Web2.0开发中的自定义标签应用。 通过自定义标签,Web2.0应用可以更加灵活地构建用户界面,提供定制化的交互体验。同时,这也有助于提升...

    掌握自定义jsp标签

    在JavaServer Pages (JSP) 技术中,自定义标签是实现页面逻辑与表现分离、提高代码可重用性和可维护性的重要手段。本文将深入探讨如何掌握自定义JSP标签,包括其原理、创建过程以及实际应用。 首先,我们要理解...

    Facelets

    10. **扩展 Facelets**:开发者可以通过创建自定义标签处理器和元标签来扩展 Facelets 功能。这包括定义自己的组件行为、事件处理和元数据。 总的来说,Facelets 是一个强大且灵活的视图技术,它简化了 JSF 应用...

    facelets中文教程(初级+高级)

    - 创建自定义标签库是Facelets的一大优势,开发者可以定义自己的标签,封装复杂的功能,提高代码可读性和可维护性。 6. **AJAX支持** - Facelets与JSF的Ajax功能紧密结合,如`&lt;f:ajax&gt;`标签,可以实现页面局部...

    JavaEE标签技术

    在"exercise"这个练习文件中,可能包含了一些关于使用JSTL、自定义标签或Facelets的示例,通过实际操作和实践,你可以更深入地理解和掌握JavaEE标签技术的应用。学习和掌握这些标签技术,对于提升JavaEE项目的质量和...

    JSF标签应用实例

    JSF还支持自定义标签,开发者可以通过扩展JSF来创建自己的UI组件库。 在"myfaces-example-simple-1.1.7-SNAPSHOT"项目中,你可以看到以下内容: 1. **源代码**:可能包含`.java`文件,这些是后端的Java类,负责...

    java 文本标签大全 api

    开发者可以通过创建自定义标签来扩展JSP的功能,自定义标签通常封装了复杂的业务逻辑或视图呈现,使得代码更加模块化和易于维护。 4. Struts标签库 Struts是Apache软件基金会的一个开源项目,它提供了丰富的标签...

    java web 标签大全

    自定义标签通过TLD(Tag Library Descriptor)文件进行定义,并在JSP页面中使用。 4. Struts2标签库 Struts2框架提供了丰富的标签库,如: - `&lt;s:textfield&gt;`:创建输入框。 - `&lt;s:submit&gt;`:创建提交按钮。 - ...

    jsf2.0 自定义组件

    自定义组件需要在标签库定义文件(.tld或.xsd)中声明,以便在Facelets模板中使用。这包括组件的标签名、属性和事件。 4. **组件注册(Component Registration)**:自定义组件需要在应用程序的faces-config.xml...

    jsf 自定义组件开发

    自定义组件通常与自定义标签库(taglib)一起使用,使得组件在JSF页面中的使用更加直观。通过定义TLD(Tag Library Descriptor)文件,可以为每个组件创建对应的XML标签。 6. **组件的生命周期** JSF组件有自己的...

    \\Custom-Tags-Basics.pdf

    - **自定义标签**:自定义标签的用途和应用场景。 - **MVC与Bean、自定义标签以及框架如Struts或JSF的结合**:如何将这些技术结合使用,构建复杂的Web应用程序。 ##### 构成标签库的组件 - **标签处理器类**:这...

    jsf入门+标签

    自定义标签**:开发者可以通过实现`UIComponent`接口创建自定义标签,扩展JSF的功能,满足特定项目需求。 **5. 使用EL表达式**:JSF结合了Expression Language(EL),允许在JSP/Facelets页面中直接引用Managed ...

    轻松入门Struts2(V3.0).pdf + java web标签大全

    3. **自定义标签**:介绍如何创建和使用自定义标签,以及如何在Struts2框架中使用这些标签增强功能。 4. **其他库的标签**:如Ajax4jsf、Facelets等,这些标签可以用来提升Web应用的交互性和用户体验。 通过阅读这...

    创建JSF自定义组件

    将包含组件类、渲染器类和标签文件的JAR文件添加到应用的类路径中,并重新部署应用。现在,你可以在任何JSF页面上使用这个自定义组件。 创建JSF自定义组件是一项复杂但强大的任务,它允许开发者根据项目需求定制Web...

    各种jsf标签Java语言

    ### 自定义标签库 JSF允许开发者创建自己的组件库,通过定义新的UI组件标签来扩展其功能。这些标签可以封装复杂的逻辑,提高代码的可读性和可维护性。 ### JSF与CDI集成 JSF可以与CDI(Contexts and Dependency ...

    facelets.......................................

    - **库和标签库**:Facelets支持导入和使用JSF标准组件库,也可以创建自己的自定义标签库,如`layout-*.xhtml`文件可能就是这样的例子。 3. **Facelets模板**: - **模板组件**:Facelets中的模板组件可以定义...

    第6章 JSF标签 课件及示例程序

    7. **自定义标签**:除了内置标签,开发者还可以创建自定义JSF标签以满足特定需求。这涉及创建自定义组件、标签库描述符(TLD)和注册标签到应用程序。 "login应用"部分可能涵盖了如何使用JSF标签创建一个登录页面...

    jsf入门、配置使用及标签说明

    此外,还可以通过自定义标签扩展JSF的功能,满足特定需求。 在**例子和实践**部分,你可能会学习如何创建一个简单的JSF应用,包括创建Managed Bean,编写视图页面,以及如何处理用户交互。例如,创建一个登录表单,...

    WebApplicationFacelets-源码.rar

    2. **动态标签**:Facelets支持自定义标签,这些标签可以与JavaBean或其他后台资源进行交互,提供强大的数据绑定功能。 3. **编译时处理**:与JSP在运行时被解释不同,Facelets在部署时编译成Java类,这大大提高了...

    《JSF标签》简体中文版

    10. **自定义标签**:如果需要扩展JSF的功能,可以学习如何创建自定义标签以复用代码和逻辑。 这本书将帮助你全面掌握JSF标签的使用技巧,并提升你在开发JavaWeb应用时的效率。通过深入学习和实践,你将能够构建出...

Global site tag (gtag.js) - Google Analytics