- JSF 教程
- JSF - 首页
- JSF - 概述
- JSF - 环境设置
- JSF - 架构
- JSF - 生命周期
- JSF - 第一个应用程序
- JSF - 托管Bean
- JSF - 页面导航
- JSF - 基本标签
- JSF - Facelet 标签
- JSF - 转换器标签
- JSF - 验证器标签
- JSF - DataTable
- JSF - 复合组件
- JSF - Ajax
- JSF - 事件处理
- JSF - JDBC 集成
- JSF - Spring 集成
- JSF - 表达式语言
- JSF - 国际化
- JSF 有用资源
- JSF - 快速指南
- JSF - 有用资源
- JSF - 讨论
JSF - 自定义标签
JSF 为开发者提供了强大的能力来定义自己的自定义标签,这些标签可用于呈现自定义内容。
在 JSF 中定义自定义标签是一个三步过程。
步骤 | 描述 |
---|---|
1a | 创建一个 xhtml 文件,并使用ui:composition标签在其中定义内容 |
1b | 创建一个标签库描述符(.taglib.xml 文件),并在其中声明上述自定义标签。 |
1c | 在 web.xml 中注册标签库描述符 |
步骤 1a:定义自定义标签内容:buttonPanel.xhtml
<h:body> <ui:composition> <h:commandButton type = "submit" value = "#{okLabel}" /> <h:commandButton type = "reset" value = "#{cancelLabel}" /> </ui:composition> </h:body>
步骤 1b:定义标签库:tutorialspoint.taglib.xml
顾名思义,标签库是一个标签库。下表描述了标签库的重要属性。
序号 | 节点及描述 |
---|---|
1 | facelet-taglib 包含所有标签。 |
2 | namespace 标签库的命名空间,必须唯一。 |
3 | tag 包含单个标签 |
4 | tag-name 标签名称 |
5 | source 标签实现 |
<facelet-taglib> <namespace>https://tutorialspoint.com/facelets</namespace> <tag> <tag-name>buttonPanel</tag-name> <source>com/tutorialspoint/buttonPanel.xhtml</source> </tag> </facelet-taglib>
步骤 1c:注册标签库:web.xml
<context-param> <param-name>javax.faces.FACELETS_LIBRARIES</param-name> <param-value>/WEB-INF/tutorialspoint.taglib.xml</param-value> </context-param>
在 JSF 中使用自定义标签是一个两步过程。
步骤 | 描述 |
---|---|
2a | 创建一个 xhtml 文件并使用自定义标签库的命名空间 |
2b | 像使用普通的 JSF 标签一样使用自定义标签 |
步骤 2a:使用自定义命名空间:home.xhtml
<html xmlns = "http://www.w3.org/1999/xhtml" xmlns:h = "http://java.sun.com/jsf/html" xmlns:ui = "http://java.sun.com/jsf/facelets"> xmlns:tp = "https://tutorialspoint.com/facelets">
步骤 2b:使用自定义标签:home.xhtml
<h:body> <tp:buttonPanel okLabel = "Ok" cancelLabel = "Cancel" /> </h:body>
示例应用程序
让我们创建一个测试 JSF 应用程序来测试 JSF 中的模板标签。
步骤 | 描述 |
---|---|
1 | 创建一个名为helloworld的项目,放在com.tutorialspoint.test包下,如JSF - 第一个应用程序章节所述。 |
2 | 在WEB-INF目录下创建com文件夹。 |
3 | 在WEB-INF > com目录下创建tutorialspoint文件夹。 |
4 | 在WEB-INF > com > tutorialspoint文件夹下创建buttonPanel.xhtml文件。按如下说明修改它。 |
5 | 在WEB-INF文件夹下创建tutorialspoint.taglib.xml文件。按如下说明修改它。 |
6 | 按如下说明修改WEB-INF文件夹下的web.xml文件。 |
7 | 按如下说明修改home.xhtml。保持其余文件不变。 |
8 | 编译并运行应用程序以确保业务逻辑按要求工作。 |
9 | 最后,将应用程序构建成 war 文件并将其部署到 Apache Tomcat Web服务器。 |
10 | 使用最后一步中说明的适当 URL 启动您的 Web 应用程序。 |
buttonPanel.xhtml
<?xml version = "1.0" encoding = "UTF-8"?> <!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:ui = "http://java.sun.com/jsf/facelets"> <h:body> <ui:composition> <h:commandButton type = "submit" value = "#{okLabel}" /> <h:commandButton type = "reset" value = "#{cancelLabel}" /> </ui:composition> </h:body> </html>
tutorialspoint.taglib.xml
<?xml version = "1.0"?> <!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>https://tutorialspoint.com/facelets</namespace> <tag> <tag-name>buttonPanel</tag-name> <source>com/tutorialspoint/buttonPanel.xhtml</source> </tag> </facelet-taglib>
web.xml
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <display-name>Archetype Created Web Application</display-name> <context-param> <param-name>javax.faces.PROJECT_STAGE</param-name> <param-value>Development</param-value> </context-param> <context-param> <param-name>javax.faces.FACELETS_LIBRARIES</param-name> <param-value>/WEB-INF/tutorialspoint.taglib.xml</param-value> </context-param> <servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>*.jsf</url-pattern> </servlet-mapping> </web-app>
home.xhtml
<?xml version = "1.0" encoding = "UTF-8"?> <!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:ui = "http://java.sun.com/jsf/facelets" xmlns:tp = "https://tutorialspoint.com/facelets"> <h:head> <title>JSF tutorial</title> </h:head> <h:body> <h1>Custom Tags Example</h1> <tp:buttonPanel okLabel = "Ok" cancelLabel = "Cancel" /> </h:body> </html>
完成所有更改后,让我们像在 JSF - 第一个应用程序章节中那样编译并运行应用程序。如果您的应用程序一切正常,这将产生以下结果。
jsf_facelets_tags.htm
广告