ICEfaces Note(1)
一、ICEfaces架构的主要元素包括:
1)Persistent Faces Servlet:通过”.faces“扩展名映射到Persistent Faces Servlet。
2)Blocking Servlet:管理所有要阻塞和非阻塞的请求。
3)D2D ViewHandler:建立Direct-to-DOM rendering环境。
4)D2D Parser:从JSP文档中聚集组件树。
5)D2D RenderKit:翻译组件树到DOM。
6)DOM Response Writer:往DOM中写入。
7)DOM Serializer:序列化DOM。
8)DOM Updater:聚集DOM的改变到单个的增量DOM更新。
9)Component Suite:提供丰富的JSF组件集。
10)Client-side Ajax Bridge:持续DOM更新请求的产生和响应处理。
二、DataTable组件:显示数据的表组件。
1)支持表头Facet(table Header facet)和表尾Facet(table Footer facet);
2)内嵌列组件,依次包含列头(column header),列尾(column footer)和commandSortHeader facet;
3)带一可选功能支持分页浏览(a paged tabled view)。
tag-name:<ice:dataTable>
tag-class:com.icesoft.faces.component.ext.taglib.DataTableTag
component-class:com.icesoft.faces.component.ext.HtmlDataTable
component-type:com.icesoft.faces.HtmlDataTable
component-family:javax.faces.Command
renderer-class:com.icesoft.faces.component.ext.renderkit.TableRenderer
renderer-type:com.icesoft.faces.Table
xmlns:f ="http://java.sun.com/jsf/core"
xmlns:ice ="http://www.icesoft.com/icefaces/component" >
< ice:panelGrid styleClass ="contentLayoutGridStyle" columns ="1" border ="0" >
< ice:panelTabSet styleClass ="componentPanelTabSetLayout" >
< ice:panelTab label ="#{msgs['tabbedHeadings.demo']}" >
< ice:panelGrid styleClass ="componentLayoutRootTable" columns ="1" >
< ice:panelGrid styleClass ="formBorderHighlight" >
< h3 >
< ice:outputText value ="#{msgs['component.textFields.directions']}" />
</ h3 >
< br />
< ice:panelGrid columns ="2" rowClasses ="textFieldNameRow,textFieldNameRow,textFieldCommentsRow" >
< ice:outputText styleClass ="propertyLabel" value ="#{msgs['component.textFields.name']}" />
< ice:inputText value ="#{textFields.name}" partialSubmit ="true" />
< ice:outputText styleClass ="propertyLabel" value ="#[msgs['component.textFields.password']}" />
< ice:inputSecret value ="#{textFields.password}" partialSubmit ="true" />
< div style ="padding-top:5px;" >
< ice:outputText styleClass ="propertyLabel" value ="#{msgs['component.textFields.comments']}" />
</ div >
< ice:inputTextarea value ="#{textFields.comments}" cols ="20" rows ="4" partialSubmit ="true"
style ="width:280px;height:80px;overflow:auto;" />
</ ice:panelGrid >
</ ice:panelGrid >
< ice:panelGrid styleClass ="formBorderHighlight" >
< h3 >
< ice:outputText value ="#{msgs['component.textFields.serverFeedback']}" />
</ h3 >
< ice:panelGrid columns ="2" >
< ice:outputText value ="#{msgs['component.textFields.name']}" styleClass ="valueHeader" />
< ice:outputText value ="#{textFields.name}" styleClass ="valueText" />
< ice:outputText value ="#{msgs['component.textFields.password']}" styleClass ="valueHeader" />
< ice:outputText value ="#{textFields.password}" styleClass ="valueText" />
< ice:outputText value ="#{msgs['component.textFields.comments']}" styleClass ="valueHeader" />
< ice:outputText value ="#{textFields.comments}" styleClass ="valueText" />
</ ice:panelGrid >
</ ice:panelGrid >
</ ice:panelGrid >
</ ice:panelTab >
< ice:panelTab label ="#{msgs['tabbedHeadigns.description']}" >
< iframe src ="./docs/textEntryDoc.html" class ="includeIframe" width ="100%" ></ iframe >
</ ice:panelTab >
< ice:panelTab label ="#{msgs['tabbedHeadings.source']}" >
< iframe src ="./sourcecodeStream.html?path=./inc/components/textFields.jspx"
class ="includeIframe" width ="100%" >
</ iframe >
</ ice:panel >
</ ice:panelTabSet >
</ ice:panelGrid >
</ ice:form >