JSF 自定義標(biāo)簽示例

2018-02-22 14:36 更新

JSF教程 - JSF自定義標(biāo)簽示例


在JSF 2.0中,我們可以創(chuàng)建自定義標(biāo)簽來(lái)渲染預(yù)定義的內(nèi)容。

自定義標(biāo)記看起來(lái)像一個(gè)普通的JSF標(biāo)記,并使用“ui:composition”將內(nèi)容插入頁(yè)面。

以下列表是我們?cè)贘SF 2.0中創(chuàng)建自定義標(biāo)記時(shí)可以遵循的步驟。

  • 在標(biāo)記庫(kù)描述符中聲明自定義標(biāo)簽。
  • 在web.xml中注冊(cè)標(biāo)記庫(kù)描述符。
  • 用途:ui:compisition標(biāo)簽,用于在XHTML頁(yè)面中創(chuàng)建預(yù)定義內(nèi)容。

以下部分如何為JSF創(chuàng)建自定義標(biāo)簽。


例子

下面的代碼來(lái)自UserBean.java。

package cn.w3cschool.common;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
 
import java.io.Serializable;
 
@ManagedBean
@SessionScoped
public class UserBean implements Serializable {
 
  private static final long serialVersionUID = 1L;
 
}

以下代碼來(lái)自button.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="#{buttonSubmitLabel}" />
      <h:commandButton type="reset" value="#{buttonResetLabel}" />
        
      </ui:composition>
    </h:body>
</html>

以下代碼來(lái)自demo.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:w3cschool="//m.hgci.cn/facelets"
      >
    <h:body>
      <w3cschool:button 
        buttonSubmitLabel="Submit" 
        buttonResetLabel="Reset" />
      
    </h:body>

</html>

以下代碼來(lái)自w3cschool.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>//m.hgci.cn/facelets</namespace>
  <tag>
    <tag-name>button</tag-name>
    <source>tags/com/w3cschool/button.xhtml</source>
  </tag>
</facelet-taglib>
下載 Custom-Tag.zip

Web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
  http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
  id="WebApp_ID" version="2.5">

  <display-name>JavaServerFaces</display-name>
  
  <!-- Load custom tag into JSF web application -->
  <context-param>
    <param-name>facelets.LIBRARIES</param-name>
    <param-value>/WEB-INF/w3cschool.taglib.xml</param-value>
  </context-param>
  
  
  <!-- Change to "Production" when you are ready to deploy -->
  <context-param>
    <param-name>javax.faces.PROJECT_STAGE</param-name>
    <param-value>Development</param-value>
  </context-param>

  <!-- Welcome page -->
  <welcome-file-list>
    <welcome-file>faces/hello.xhtml</welcome-file>
  </welcome-file-list>

  <!-- JSF mapping -->
  <servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>

  <!-- Map these files with JSF -->
  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>/faces/*</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.jsf</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.faces</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.xhtml</url-pattern>
  </servlet-mapping>
</web-app>

運(yùn)行

將生成的WAR文件從目標(biāo)文件夾復(fù)制到Tomcat部署文件夾,并運(yùn)行Tomcat-Install-folder/bin/startup.bat。

Tomcat完成啟動(dòng)后,在瀏覽器地址欄中鍵入以下URL。

http://localhost:8080/simple-webapp/demo.xhtml
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)