熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

試著開始開發基於JSF2的Html5組件包

2022-06-13   來源: Java核心技術 

  現在許多浏覽器都開始支持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上部署運行成功


From:http://tw.wingwit.com/Article/program/Java/hx/201311/26425.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.