javascript

位置:IT落伍者 >> javascript >> 浏览文章

试着开始开发基于JSF2的Html5组件包


发布日期:2021年01月03日
 
试着开始开发基于JSF2的Html5组件包

现在许多浏览器都开始支持html然而当前的ide编辑环境还不能识别html的标签在工作中有应用html的需求想通过开发基于JSF的Html组件包来满足这样的现实需求实现可复用的html表现组件

开始试写第一个标记<h:doctype/>

组件包结构如下

组件的类文件

Java代码

package l;

import ponentUIComponentBase;

/**

* 开始于

* html的DOCTYPE的文档类型声明一个简单的html标记封装

* 最后修改于

* @author 普特工作室

* @version

*/

public class HtmlDoctype extends UIComponentBase {

/**

* 使用组件的类名作为返回组件的家族标识

* @return

*/

@Override

public String getFamily() {

return HtmlDoctypeclassgetName();

}

}

组件的标记处理类

Java代码

package computl;

import lHtmlDoctype;

import computesolHtmlDoctypeRenderer;

import javaxfaceswebappUIComponentELTag;

/**

* 开始于

* 组件的标志处理器类组件的标记类

* 衔接代码让这个组件能在JSP页面上下文中执行从而钩到其它的相关类

* 最后修改于

* @author 普特工作室

* @version

*/

public class HtmlDoctypeTag extends UIComponentELTag {

/**

*

* 直接使用类的全路径名作为组件的类型名

* 此处是衔接代码通过此衔接代码

* 根据获得的组件名在facesconfigxml中找到对应的组件类

* 然后执行组件的处理逻辑

* @return

*/

@Override

public String getComponentType() {

String compontentType = HtmlDoctypeclassgetName();

return compontentType;

}

/**

* 直接使用类的全路径名作为组件的渲染器类型名

* 此处是衔接代码通过此衔接代码

* 根据获得的渲染器名在facesconfigxml中找到对应的渲染器类

* 然后执行组件的渲染处理

* @return

*/

@Override

public String getRendererType() {

String rendererType = HtmlDoctypeRendererclassgetName();

return rendererType;

}

}

组件渲染器类

Java代码

package computesol;

import javaioIOException;

import ponentUIComponent;

import ntextFacesContext;

import ntextResponseWriter;

import javaxfacesrenderRenderer;

/**

* 开始于

* HTML的文档类型渲染器

* 最后修改于

* @author 普特工作室

* @version

*/

public class HtmlDoctypeRenderer extends Renderer {

/**

* 编码组件渲染成Html代码

* @param context

* @param component

* @throws IOException

*/

@Override

public void encodeBegin(FacesContext context UIComponent component) throws IOException {

//从faces上下文环境中获得响应书写器

ResponseWriter writer = contextgetResponseWriter();

//直接把字符串写出不进行字符转义处理

writerwrite(<!DOCTYPE HTML>);

}

}

标记库文件

Xml代码

<?xml version= encoding=UTF?>

<taglib

version=

xmlns=

xmlns:xsi=instance

xsi:schemaLocation= jsptaglibrary__xsd>

<description>用于JSFhtml通用标记的JSF封装</description>

<tlibversion></tlibversion>

<shortname>jsf_html</shortname>

<uri>_html</uri>

<tag>

<description>Html的文档类型声明封装</description>

<name>doctype</name>

<tagclass>

computlHtmlDoctypeTag

</tagclass>

</tag>

</taglib>

组件库文件

Java代码

<?xml version= encoding=UTF?>

<!

Document : facesconfigxml

Created on : 下午:

Author : 普特工作室

Description: JSF组件库的组件注册

>

<facesconfig

xmlns=

xmlns:xsi=instance

xsi:schemaLocation= facesconfig__xsd

version=>

<component>

<description>Html的文档类型声明DOCTYPE</description>

<componenttype>

lHtmlDoctype

</componenttype>

<componentclass>

lHtmlDoctype

</componentclass>

</component>

<renderkit>

<renderer>

<componentfamily>

lHtmlDoctype

</componentfamily>

<renderertype>

computesolHtmlDoctypeRenderer

</renderertype>

<rendererclass>

computesolHtmlDoctypeRenderer

</rendererclass>

</renderer>

</renderkit>

</facesconfig>

组件在Jsp文件中使用

Html代码

<%@page contentType=text/html pageEncoding=UTF%>

<%@taglib prefix=f uri=%>

<%@taglib prefix=h uri=%>

<%@taglib prefix=h uri=_html %>

<!DOCTYPE HTML PUBLIC //WC//DTD HTML Transitional//EN

>

<%

This file is an entry point for JavaServer Faces application

%>

<f:view>

<h:doctype/>

<html>

<head>

<meta httpequiv=ContentType content=text/html; charset=UTF/>

<title>JSP Page</title>

</head>

<body>

<h><h:outputText value=JavaServer Faces/></h>

</body>

</html>

</f:view>

在tomcat上部署运行成功

上一篇:javascript实现的java里的Map对象

下一篇:JQuery框架介绍