程序最终效果图:
如何创建你自己的JSF组件(有删改)
介绍
企业JSF是一种基于组件方法构建用户界面的技术,它使用UI组件作为构建块简化开发,能大量减少代码的书写,并且允许同样的组件在不同项目中使用。
关于组件我们能说什么呢? Sun 的JSF参考实现只提供了很少几个普通组件。 开源的JSF实现也没有提供的更多。
我们这个指南专注于填补这个缺口。 它采用一步一步的方法,并且每一步非常地容易了解。 提供的例子并没有覆盖组件开发的各个方面,但对于了解组件开发的概念是一个非常好的开始。
这个指南由七部分组成。每一步增加一些新的代码到前一步的例子里。 指南包含的代码描绘了每一步的结果。如果你感到迷惑,你可以把你的结果与这些结果比较, 同样,为了测试它如何工作,你也可以增加一些额外功能到你的代码里。如果发生了混乱,你可以将指南包含的代码替换你现在的代码,而继续下一步。
指南的源代码分开放进了七个文件夹中,它们的名字是Step1, Step2, Step3, Step4,
在第一步骤中,我们将下面代码创建为一个组件。
<?xml version="1.0" encoding="UTF-8"?>
taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<body-content>JSP</body>
import javax.faces.component.UIComponent;
import javax.faces.webapp.UIComponentTag;
public void release() {
// the super class method should be called
super.release();
}
// the super class method should be called
super.setProperties(component);
}
return "ticker";
}
// null means the component renders itself
return null;
}
}
类TickerTag 处理标记属性。 按照命名惯例,这样的类有一个后缀“Tag“。类TickerTag 继承 UIConponentTag 并实现四个方法。
方法getRendererType()返回组件绘制器的名称。如果这个方法返回null, 它的意思是这个组件没有绘制器,组件将绘制它自己。
<?xml version="1.0" encoding="UTF-8"?>
faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN"
"http://java.sun.com/dtd/web-facesconfig_1_0.dtd">
import java.io.IOException;
import javax.faces.component.UIOutput;
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
ResponseWriter writer = context.getResponseWriter();
writer.startElement("div", this);
}
public void encodeEnd(FacesContext context) throws IOException {
ResponseWriter writer = context.getResponseWriter();
writer.endElement("div");
}
}
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://jsftutorials.com/" prefix="d" %>
<head>
</head>
<body>
</body>
Step 2: 增加简单的属性
↑返回目录
前一篇: jsf在bean的构造函数中访问数据库
后一篇: 使用JSF和MyFaces实现文件上载