JavaScript 自定义标签是一种新的 HTML 标签,它可以让开发者使用 JavaScript 创建自定义标签,从而更加方便地创建复杂的 Web 应用。
JavaScript 自定义标签的优势在于,它可以让开发者更加方便地创建复杂的 Web 应用,而不必去写大量的 HTML 代码。此外,使用 JavaScript 自定义标签还能够提高代码的可读性和可重用性,因为开发者可以将一些常用的代码封装成一个自定义标签,然后在需要时直接使用这个自定义标签即可。
JavaScript 自定义标签本质上是一个 JavaScript 对象,其中包含了一些属性和方法。开发者需要先创建一个 JavaScript 对象,然后将其注册到浏览器中,最后就能在 HTML 中使用这个对象作为一个新的标签了。
// 创建一个 JavaScript 对象 var myTag = { // 添加相应的属性 name: 'my-tag', // 添加相应的方法 render: function() { // 添加相应的逻辑代码 } }; // 注册该对象到浏览器中 customElements.define(myTag.name, myTag);
在JSF 2.0中,我们可以创建自定义标签来渲染预定义的内容。
自定义标记看起来像一个普通的JSF标记,并使用“ui:composition”将内容插入页面。
以下列表是我们在JSF 2.0中创建自定义标记时可以遵循的步骤。
下面的代码来自UserBean.java。
package cn..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; }
以下代码来自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>
以下代码来自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:="//www..cn/facelets" > <h:body> <:button buttonSubmitLabel="Submit" buttonResetLabel="Reset" /> </h:body> </html>
以下代码来自.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>//www..cn/facelets</namespace> <tag> <tag-name>button</tag-name> <source>tags/com//button.xhtml</source> </tag> </facelet-taglib>下载 Custom-Tag.zip
<?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/.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>
将生成的WAR文件从目标文件夹复制到Tomcat部署文件夹,并运行Tomcat-Install-folder/bin/startup.bat。
Tomcat完成启动后,在浏览器地址栏中键入以下URL。
http://localhost:8080/simple-webapp/demo.xhtml
JSF教程 -JSF Form-Action导航示例JSF提供了导航解析选项,即使托管bean不同的方法返回相同的视图名称。我们可以在faces-config....
Java教程 -Java注释注释将补充信息嵌入源文件中。注释不会更改程序的语义。通过基于接口的机制创建注释。以下代码声明了一个名为...
JPA教程 -JPA ID生成策略示例当使用id字段的自动生成值时,我们可以选择生成策略。我们使用的一个常见策略是IDENTITY。例子以下...
JPA教程 -JPA一对多非类型化映射示例以下代码表示非类型的java.util.Map的目标实体类。@OneToMany(targetEntity=Employee.class,...