现在许多浏览器都开始支持html5,然而当前的ide编辑环境还不能识别html5的标签,在工作中,有应用html5的需求,想通过开发基于JSF2的Html5组件包,来满足这样的现实需求,实现可复用的html5表现组件。
开始试写,第一个标记<h5:doctype/>
组件包结构如下:
组件的类文件
package com.putesoft.jsf.component.html5;
import javax.faces.component.UIComponentBase;
/**
* 开始于 2010-04-07
* html5的DOCTYPE的文档类型声明,一个简单的html5标记封装
* 最后修改于 2010-04-09
* @author 普特工作室
* @version 1.0
*/
public class Html5Doctype extends UIComponentBase {
/**
* 使用组件的类名作为,返回组件的家族标识
* @return
*/
@Override
public String getFamily() {
return Html5Doctype.class.getName();
}
}
组件的标记处理类
package com.putesoft.jsf.taglib.html5;
import com.putesoft.jsf.component.html5.Html5Doctype;
import com.putesoft.jsf.renderkit.html5.Html5DoctypeRenderer;
import javax.faces.webapp.UIComponentELTag;
/**
* 开始于 2010-04-08
* 组件的标志处理器类,组件的标记类
* 衔接代码,让这个组件能在JSP页面上下文中执行,从而钩到其它的相关类
* 最后修改于 2010-04-09
* @author 普特工作室
* @version 1.0
*/
public class Html5DoctypeTag extends UIComponentELTag {
/**
*
* 直接使用类的全路径名,作为组件的类型名,
* 此处是衔接代码,通过此衔接代码,
* 根据获得的组件名,在faces-config.xml中,找到对应的组件类
* 然后执行组件的处理逻辑
* @return
*/
@Override
public String getComponentType() {
String compontentType = Html5Doctype.class.getName();
return compontentType;
}
/**
* 直接使用类的全路径名,作为组件的渲染器类型名,
* 此处是衔接代码,通过此衔接代码,
* 根据获得的渲染器名,在faces-config.xml中,找到对应的渲染器类
* 然后执行组件的渲染处理
* @return
*/
@Override
public String getRendererType() {
String rendererType = Html5DoctypeRenderer.class.getName();
return rendererType;
}
}
组件渲染器类
package com.putesoft.jsf.renderkit.html5;
import java.io.IOException;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
import javax.faces.render.Renderer;
/**
* 开始于 2010-04-10
* HTML5的文档类型渲染器
* 最后修改于 2010-04-10
* @author 普特工作室
* @version 1.0
*/
public class Html5DoctypeRenderer extends Renderer {
/**
* 编码组件,渲染成Html代码
* @param context
* @param component
* @throws IOException
*/
@Override
public void encodeBegin(FacesContext context, UIComponent component) throws IOException {
//从faces上下文环境中获得响应书写器
ResponseWriter writer = context.getResponseWriter();
//直接把字符串写出,不进行字符转义处理
writer.write("<!DOCTYPE HTML>");
}
}
标记库文件
<?xml version="1.0" encoding="UTF-8"?>
<taglib
version="2.1"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd">
<description>用于JSF2的,html5通用标记的JSF封装</description>
<tlib-version>1.0</tlib-version>
<short-name>jsf_html5</short-name>
<uri>http://putesoft.com/jsf_html5</uri>
<tag>
<description>Html5的文档类型声明封装</description>
<name>doctype</name>
<tag-class>
com.putesoft.jsf.taglib.html5.Html5DoctypeTag
</tag-class>
</tag>
</taglib>
组件库文件
<?xml version="1.0" encoding="UTF-8"?>
<!--
Document : faces-config.xml
Created on : 2010年4月8日, 下午5:09
Author : 普特工作室
Description: JSF组件库的组件注册
-->
<faces-config
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
version="2.0">
<component>
<description>Html5的文档类型声明DOCTYPE</description>
<component-type>
com.putesoft.jsf.component.html5.Html5Doctype
</component-type>
<component-class>
com.putesoft.jsf.component.html5.Html5Doctype
</component-class>
</component>
<render-kit>
<renderer>
<component-family>
com.putesoft.jsf.component.html5.Html5Doctype
</component-family>
<renderer-type>
com.putesoft.jsf.renderkit.html5.Html5DoctypeRenderer
</renderer-type>
<renderer-class>
com.putesoft.jsf.renderkit.html5.Html5DoctypeRenderer
</renderer-class>
</renderer>
</render-kit>
</faces-config>
组件在Jsp文件中使用
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<%@taglib prefix="h5" uri="http://putesoft.com/jsf_html5" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<%--
This file is an entry point for JavaServer Faces application.
--%>
<f:view>
<h5:doctype/>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>JSP Page</title>
</head>
<body>
<h1><h:outputText value="JavaServer Faces"/></h1>
</body>
</html>
</f:view>
在tomcat6.0.20上部署运行,成功。
完整的JSF2的Html5组件包下载
- 大小: 28.9 KB
分享到:
相关推荐
这篇博文“编写JSF用户自定义UI组件(之五)”可能深入探讨了如何创建和使用自定义组件的过程,虽然描述部分为空,但我们可以基于标题推测其主要内容。 1. **JSF组件体系结构**:JSF组件是由UIComponent类及其子类...
版本号2.1.7表示这是一个基于JSF 2.1规范的实现。 2. **jsf-api-2.1.7.jar**:这个库提供了JSF API,定义了JSF的接口和类,供开发者在代码中引用。API库通常包含框架的公共接口和抽象类,不包含具体实现。 3. **...
**JSF组件模型** 基于组件树的概念,每个组件都有自己的属性、事件和行为。UIRepeat作为容器组件,可以包含其他JSF组件,如`h:outputText`、`h:inputText`等,并对这些子组件进行多次迭代渲染。 **UIRepeat的工作...
- **容器独立性**:JSF组件和页面在不同的Java EE容器中具有高度的可移植性,这意味着应用可以在不同的服务器上运行而无需修改代码。 - **JSF生命周期**:JSF页面请求遵循特定的生命周期,包括Restore Component ...
**JCatalog电子商务系统案例**是基于Java技术栈的电商应用,它巧妙地融合了三个核心框架:JavaServer Faces (JSF)、Spring 和 Hibernate。这三个框架在Java开发领域都有着广泛的应用,它们各自承担着不同的职责,...
通过上述的讲解,我们了解了如何使用Maven构建和管理基于JSF2的Web应用,包括配置POM,打包项目,以及部署到Tomcat服务器。JSF2提供了丰富的组件库和灵活的架构,使得开发企业级Web应用变得更加便捷。同时,开源的...
标题 "primefaces jsf spring3.2.4 hibernate4.2.7 maven整合" 涉及到的是一个基于Java技术栈的Web应用程序开发整合。以下是这些技术的详细说明: **PrimeFaces**:PrimeFaces是一个开源的用户界面组件库,专为Java...
标题中的“Hibernate\dom4j\jquery\jsf\spring API”揭示了这个压缩包包含的是与Java开发相关的几个重要框架和库的API文档。这些技术在IT领域中扮演着核心角色,尤其对于Java Web应用开发来说至关重要。下面将分别...
本文主要探讨了基于Java技术的Web应用设计模型,包括Model 1、Model 2、Struts和JavaServer Faces (JSF)。这四种模型在构建可扩展性Web应用中各有优劣,对开发效率和性能有显著影响。 1. **Servlet技术与Model 1** ...
JSF引入了一个基于组件的用户界面模型,允许开发者使用预构建的UI组件来构建Web应用,极大地提高了开发效率。这些组件可以是简单的输出标签,也可以是复杂的表格化数据显示组件。此外,JSF提供了API支持,便于开发者...
JavaServer Faces (JSF) 是一种基于Java的Web应用程序开发框架,由Sun Microsystems(现已被Oracle收购)开发,旨在简化创建用户界面的过程。JSF提供了组件模型,事件处理机制以及与后端数据服务的集成,使得开发者...
其次,Servlet和JSP(JavaServer Pages)是Java Web开发的两大核心组件。Servlet是Java编写的服务端程序,负责处理HTTP请求并生成响应。JSP则是一种视图技术,允许开发者将HTML与Java代码混合,使页面更具动态性。...
在这个“基于Java EE房产中介管理系统的开发与实现”项目中,我们聚焦于如何利用Java EE技术栈来打造一个高效、可靠的房产中介管理系统。 首先,系统的核心架构通常会基于MVC(Model-View-Controller)模式。模型层...
HttpAsyncClient 是一个异步的 HTTP 客户端开发包,基于 HttpCore NIO 和 HttpClient 组件。HttpAsyncClient 的出现并不是为了替换 HttpClient,而是作为一个补充用于需要大量并发连接,对性能要求非常高的基于HTTP...
HttpAsyncClient 是一个异步的 HTTP 客户端开发包,基于 HttpCore NIO 和 HttpClient 组件。HttpAsyncClient 的出现并不是为了替换 HttpClient,而是作为一个补充用于需要大量并发连接,对性能要求非常高的基于HTTP...
HttpAsyncClient 是一个异步的 HTTP 客户端开发包,基于 HttpCore NIO 和 HttpClient 组件。HttpAsyncClient 的出现并不是为了替换 HttpClient,而是作为一个补充用于需要大量并发连接,对性能要求非常高的基于HTTP...
HD-JSH开发框架是基于三种主流Java技术——JavaServer Faces (JSF)、Spring和Hibernate的集成框架,旨在提供一套完整的解决方案,以简化企业级应用的开发过程。本篇文章将详细介绍这三大技术及其在HD-JSH框架中的...
使用这个版本的Mojarra,开发者可以构建和运行基于JSF 1.2的应用程序。然而,需要注意的是,JSF 1.2 已经是一个较旧的版本,后续版本(如2.x和3.x)引入了许多增强特性和性能优化。因此,对于新项目,建议使用更现代...
标题中的"j2ee开发框架"指的是基于J2EE规范构建的一套开发工具集,它简化了企业应用的开发过程,提高了代码的可重用性和可维护性。 描述中提到的"一个简单的j2ee开发框架"可能是指一个轻量级的实现,它并不包含所有...