版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
經(jīng)典JavaEE課程段鵬松第2章JSF的基本用法了解什么是JSF掌握J(rèn)SF的基本用法掌握J(rèn)SF的配置文件掌握托管bean的創(chuàng)建及用法掌握J(rèn)SF的導(dǎo)航模型了解JSF的標(biāo)簽用法掌握J(rèn)SF的運(yùn)行流程掌握J(rèn)SF的消息用法課程目標(biāo)目錄MVC和JSF下載、安裝JSF及使用入門(mén)解讀JSF配置托管Bean和表達(dá)式語(yǔ)言導(dǎo)航模型使用UI標(biāo)簽創(chuàng)建視圖頁(yè)面JSF的運(yùn)行流程和生命周期利用JSF的消息MVC概述MVC模型:Model-View-Controller,是一種模型、思想,和具體編程語(yǔ)言無(wú)關(guān)。Model1模型Model1非MVC模型,JSP作為控制器Model2模型Servlet作為前端控制器,Servlet中調(diào)用JavaBean來(lái)完成實(shí)際的業(yè)務(wù)邏輯處理。MVC的特點(diǎn)多個(gè)視圖對(duì)應(yīng)一個(gè)模型模型返回的數(shù)據(jù)與顯示邏輯分離三層架構(gòu)設(shè)計(jì),降低了各層之間的耦合控制器的作用非常重要更符合軟件工程的思想常見(jiàn)的MVC框架StrutsStruts1.XStruts2.XTapestrySpring內(nèi)置的MVCJSF其他MVC框架JSF概述JSF規(guī)范本身就是JavaEE5的MVC規(guī)范,通常作為前端組件使用。提倡以頁(yè)面組件的方式隱藏傳統(tǒng)Web應(yīng)用開(kāi)發(fā)的細(xì)節(jié),允許開(kāi)發(fā)者以傳統(tǒng)桌面編程的方式來(lái)開(kāi)發(fā)Web應(yīng)用。JSF的實(shí)現(xiàn)有兩種方式Sun公司的JSFRI(ReferenceImplementantion)Apache的MyFacesJSF概述JSF既是JavaWeb用戶界面標(biāo)準(zhǔn),又是嚴(yán)格遵循模型-視圖-控制器(MVC)設(shè)計(jì)模式的框架。用戶界面代碼(視圖)與應(yīng)用程序數(shù)據(jù)和邏輯(模型)的清晰分離使JSF應(yīng)用程序更易于管理。所有與應(yīng)用程序的用戶交互均由一個(gè)前端“Facesservlet”(控制器)來(lái)處理。JSF的運(yùn)行原理JSF的優(yōu)勢(shì)允許通過(guò)拖放組件的方式來(lái)快速開(kāi)發(fā)JSP頁(yè)面允許使用服務(wù)器端業(yè)務(wù)代碼來(lái)響應(yīng)客戶端事件將頁(yè)面上的UI組件的值綁定到服務(wù)器端的數(shù)據(jù)模型利用可重用和可擴(kuò)展的UI組件來(lái)構(gòu)造用戶界面跨請(qǐng)求保存和恢復(fù)UI狀態(tài)Sun推出JSF的部分目的:對(duì)抗ASP.NETStruts和JSF的區(qū)別Struts是基于請(qǐng)求-響應(yīng)模型,只是提供了更簡(jiǎn)捷、有效、易用的封裝。JSF采用面向?qū)ο蟮氖录ㄓ崣C(jī)制,Web編程中請(qǐng)求-響應(yīng)模型完全被隱藏起來(lái)了。目錄MVC和JSF下載、安裝JSF及使用入門(mén)解讀JSF配置托管Bean和表達(dá)式語(yǔ)言導(dǎo)航模型使用UI標(biāo)簽創(chuàng)建視圖頁(yè)面JSF的運(yùn)行流程和生命周期利用JSF的消息下載和安裝JSFJSFRI和MyFaces從用法角度無(wú)太大區(qū)別,本課程以JSFRI為例來(lái)學(xué)習(xí),本課程所用的JSF版本是JSF1.2_14。JSF的核心Jar包:jsf-api.jar和jsf-impl.jar,對(duì)于不同的Web服務(wù)器,安裝方式不同。(具體參考教材P57)下載和安裝JSFJSF需要JSTL標(biāo)簽庫(kù)的支持NetNeans已經(jīng)內(nèi)置了JSF框架的支持在Web應(yīng)用中安裝JSF標(biāo)簽庫(kù)的方式<%@tagliburi=“/jsf/html”prefix=“h”%><%@tagliburi=“/jsf/core”prefix=“f”%>JSF使用步驟編寫(xiě)前臺(tái)頁(yè)面即前臺(tái)的jsp或jsf頁(yè)面一般會(huì)使用較多的jsf標(biāo)簽開(kāi)發(fā)托管bean類似于Struts中的action+POJO類需要有相應(yīng)的配置文件定義導(dǎo)航規(guī)則定義邏輯視圖和物理視圖之間的對(duì)應(yīng)關(guān)系通過(guò)配置文件完成JSF的技術(shù)任務(wù)1、Model部分:編寫(xiě)JavaBean或EJB和輔助類。2、View部分:用JSF組件的自定義標(biāo)簽編寫(xiě)JSP頁(yè)面。3、Control部分:將JSF組件的自定義標(biāo)簽UI事件注冊(cè)到JavaBean或EJB監(jiān)聽(tīng)器中,如導(dǎo)航過(guò)程。4、部署描述部分:Web.xml、faces-config.xml和server-config.wsdd文件的編寫(xiě)。JSF的使用舉例以一個(gè)用戶登錄為例來(lái)介紹JSF的使用流程。實(shí)例操作演示用戶登錄的JSF例子了解JSF框架的使用步驟<%@tagliburi="/jsf/core"prefix="f"%><%@tagliburi="/jsf/html"prefix="h"%><html><head> <title>第一個(gè)JSF程序</title></head><body><f:view><h:form><h3>請(qǐng)輸入您的名稱</h3>
名稱:<h:inputTextvalue="#{}"/><p> <h:commandButtonvalue=“提交"action="login"/> </h:form></f:view></body></html>示例代碼目錄MVC和JSF下載、安裝JSF及使用入門(mén)解讀JSF配置托管Bean和表達(dá)式語(yǔ)言導(dǎo)航模型使用UI標(biāo)簽創(chuàng)建視圖頁(yè)面JSF的運(yùn)行流程和生命周期利用JSF的消息配置核心控制器在配置web.xml文件中配置FacesServlet類<servlet><servlet-name>FacesServlet</servlet-name><servlet-class>javax.faces.webapp.FacesServlet</servlet-class><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>FacesServlet</servlet-name><url-pattern>/faces/*</url-pattern></servlet-mapping>核心配置器的其他參數(shù)<!--配置JSF程序狀態(tài)的保存位置,如果設(shè)置成server則保存在session中,如果保存在client中可以保證服務(wù)器重啟應(yīng)用狀態(tài)也不會(huì)丟失--><context-param><param-name>javax.faces.STATE_SAVING_METHOD</param-name><!--程序狀態(tài)保存在客戶端--><param-value>client</param-value></context-param><!--指定JSF映射資源時(shí)的默認(rèn)后綴,默認(rèn)為.jsp--><context-param><param-name>javax.faces.DEFAULT_SUFFIX</param-name><param-value>.jsp</param-value></context-param><!--指定JSF所管理的生命周期實(shí)例的標(biāo)識(shí)符--><context-param><param-name>javax.faces.LIFECYCLE_ID</param-name><param-value></param-value></context-param>核心配置器的其他參數(shù)
<!--指定JSF配置文件的保存位置--><context-param><param-name>javax.faces.CONFIG_FILES</param-name><param-value>
/WEB-INF/faces-config-beans.xml,/WEB-INF/faces-config-nav.xml
</param-value></context-param><!--指定是否需要驗(yàn)證自定義組件--><context-param><param-name>javax.faces.verifyObjects</param-name><param-value>true</param-value></context-param><!--指定是否需要驗(yàn)證XML文件--><context-param><param-name>javax.faces.validateXml</param-name><param-value>true</param-value></context-param>核心配置器的其他參數(shù)
<!--當(dāng)設(shè)置在服務(wù)器端保存狀態(tài)時(shí),控制session保存的視圖數(shù)量,-1表示沒(méi)有限制--><context-param>
<param-name>javax.faces.NUMBER_OF_VIEWS_IN_SESSION</param-name><param-value>-1</param-value></context-param>NetBeans中使用JSF框架示意圖JSF配置文件結(jié)構(gòu)默認(rèn)名稱:faces-config.xml根元素:faces-config其他元素managed-beannavigation-ruleothersfaces-config.xml示例<faces-configversion="1.2"xmlns="/xml/ns/javaee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/javaee/xml/ns/javaee/web-facesconfig_1_2.xsd"><!--配置托管Bean--> <managed-bean> <managed-bean-name>duanps</managed-bean-name> </managed-bean><!--定義導(dǎo)航規(guī)則與頁(yè)面--> <navigation-rule> <from-view-id>/index.jsp</from-view-id> <navigation-case> <from-outcome>JAVA</from-outcome> <to-view-id>/jsp/newJava.jsp</to-view-id> </navigation-case> </navigation-rule></faces-config>目錄MVC和JSF下載、安裝JSF及使用入門(mén)解讀JSF配置托管Bean和表達(dá)式語(yǔ)言導(dǎo)航模型使用UI標(biāo)簽創(chuàng)建視圖頁(yè)面JSF的運(yùn)行流程和生命周期利用JSF的消息托管Bean概述托管Bean是JSF應(yīng)用中最重要的應(yīng)用組件,因此開(kāi)發(fā)JSF應(yīng)用的重要任務(wù)就是開(kāi)發(fā)托管Bean。一般來(lái)說(shuō),一個(gè)托管bean和一個(gè)應(yīng)用頁(yè)面對(duì)應(yīng)。托管Bean定義了與頁(yè)面中UI組件關(guān)聯(lián)的屬性和方法。托管Bean概述JSF使用Bean來(lái)達(dá)到邏輯層與表現(xiàn)層分離的目的,Bean的管理集中在配置文件中,只要修改配置文件,就可以修改Bean之間的相依關(guān)系。BackingBeans:在真正的業(yè)務(wù)邏輯Bean及UI組件之間搭起橋梁,在BackingBean中會(huì)呼叫業(yè)務(wù)邏輯Bean處理使用者的請(qǐng)求,或者是將業(yè)務(wù)處理結(jié)果放置其中,等待UI組件取出當(dāng)中的值并顯示結(jié)果給使用者。托管Bean的定義和普通的JavaBean定義幾乎完全一致提供一個(gè)無(wú)參的構(gòu)造器為每個(gè)屬性定義gettter和setter方法托管Bean的屬性可以綁定到如下形式之一:綁定到一個(gè)組件的值(value屬性)綁定到一個(gè)組件實(shí)例(binding屬性)綁定到一個(gè)轉(zhuǎn)換器實(shí)例(<f:convertXxx…>)綁定到一個(gè)驗(yàn)證器實(shí)例(<f:validatorXxx…>)綁定到一個(gè)監(jiān)聽(tīng)器實(shí)例(<f:xxxListener…>)托管Bean的配置托管Bean的基本定義:名稱 <managed-bean-name>類 <managed-bean-class> 存活范圍 <managed-bean-scope>可選設(shè)置屬性的初始值<managed-property>示例
<managed-property> <property-name>user</property-name> <value>#{user}</value></managed-property>在Java代碼中獲取Bean第一種方式:
FacesContextcontext=FacesContext.getCurrentInstance(); ValueBindingbinding= context.getApplication().createValueBinding("#{userBean}"); UserBeanbean=(UserBean)binding.getValue(context);
第二種方式: FacesContextctx=FacesContext.getCurrentInstance(); VariableResolvervariableResolver=ctx.getApplication().getVariableResolver(); UserBeanbean=(UserBean)variableResolver.resolveVariable(ctx,“userBean");第三種方式: Applicationapplication=context.getApplication(); UserBeanbean=
(UserBean)application.evaluateValueExpressionGet(
context,"#{userBean}",UserBean.class);托管Bean的作用域application:一直存活session:會(huì)話過(guò)程request:請(qǐng)求階段viewnone:需要時(shí),臨時(shí)<!--配置托管Bean--> <managed-bean> <managed-bean-name>duanps</managed-bean-name> <managed-bean-class>com.dps.MyJsfAction</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> </managed-bean>JSF的表達(dá)式語(yǔ)言(EL)JSF表達(dá)式語(yǔ)言(EL):JSFExpressionLanguage搭配JSF標(biāo)簽來(lái)使用,是用來(lái)存取數(shù)據(jù)對(duì)象的一個(gè)簡(jiǎn)易語(yǔ)言。以#開(kāi)始,將變量或運(yùn)算式放置在{與}之間。#{userB}EL的變量名也可以程序執(zhí)行過(guò)程中所聲明的名稱,或是JSFEL預(yù)定義的隱含對(duì)象。#{}或#{param['name']}如果變量是List類型或Map類型的話,則可以在[]中指定索引。#{someBean.someList[0]}#{someBean.someMap[]}JSF的表達(dá)式語(yǔ)言(EL)示
例說(shuō)
明#{myBean.value}返回保存在關(guān)鍵字myBean
下的對(duì)象的value屬性,或者如果myBean是一個(gè)Map,則返回存儲(chǔ)在關(guān)鍵字value下的元素#{myBean['value']}同"#{myBean.value}“#{myArrayList[5]}返回保存在關(guān)鍵字myArrayList下的List的第5個(gè)元素#{myMap['foo']}從保存在關(guān)鍵字myMap下的Map中返回保存在關(guān)鍵字foo下的對(duì)象#{myMap[foo.bar]}從保存在myMap關(guān)鍵字下的Map中返回保存在等于表達(dá)式foo.bar的值的關(guān)鍵字下的對(duì)象#{myMap['foo'].value}從保存在關(guān)鍵字myMap下的Map中返回保存在關(guān)鍵字foo下的對(duì)象的value屬性#{myMap['foo'].value[5]}從保存在關(guān)鍵字myMap下的Map返回關(guān)鍵字foo下的List或者數(shù)組的第5個(gè)元素#{myString}返回存儲(chǔ)在myString關(guān)鍵字下的String對(duì)象#{myInteger}返回存儲(chǔ)在myInteger關(guān)鍵字下的Integer對(duì)象#{user.role=='normal'}如果關(guān)鍵字user下的對(duì)象的role屬性等于normal則返回true.否則返回falseJSF的表達(dá)式語(yǔ)言(EL)示
例說(shuō)
明#{(user.balance-200)==0}如果關(guān)鍵字user下的對(duì)象的balance屬性減去200等于0,則返回true。否則返回falseHello#{}!返回字符串"Hello",后跟關(guān)鍵字user下的對(duì)象的name屬性。所以,如果用戶的名稱是Sean,則會(huì)返回"HelloSean!"Youare#{(user.balance>100)?'loaded':'notloaded'}如果關(guān)鍵字user下的對(duì)象的balance屬性小于100,返回"Youareloaded",否則返回"Youarenotloaded"#{myBean.methodName}返回關(guān)鍵字myBean下名為methodName的對(duì)象的方法#{20+3}返回23JSF的表達(dá)式語(yǔ)言(EL)語(yǔ)
法替
代操
作[]
訪問(wèn)數(shù)組、List元素或者M(jìn)ap條目()
創(chuàng)建子表達(dá)式并控制求解順序?:
條件表達(dá)式:ifCondition?trueValue:falseValue+
加-
減或者負(fù)號(hào)*
乘/div除%mod模(求余)==eq等于(對(duì)對(duì)象,使用equals()方法)!=ne不等于<
lt小于>
gt大于<=le小于或等于>=ge大于或等于&&and邏輯AND||or邏輯OR!not邏輯NOTempty
測(cè)試空值(null、空字符串、數(shù)組、Map或者沒(méi)有值的Collection)JSF的表達(dá)式語(yǔ)言(EL)隱含變量說(shuō)
明實(shí)
例applicationScope應(yīng)用作用域變量的Map,以名稱作為關(guān)鍵字#{applicationScope.myVariable}cookie一個(gè)當(dāng)前請(qǐng)求的cookie值的Map,以cookie名稱作為關(guān)鍵字#{cookie.myCookie}facesContext當(dāng)前請(qǐng)求的FacesContext實(shí)例#{facesContext}header當(dāng)前請(qǐng)求的HTTP首部值的Map,以header名稱作為關(guān)鍵字。如果給定的header名稱有多個(gè)值,僅返回第1個(gè)值#{header['User-Agent']}headerValues當(dāng)前請(qǐng)求的HTTP首部值的Map,以header名稱作為關(guān)鍵字。對(duì)每個(gè)關(guān)鍵字,返回一個(gè)String數(shù)組(以便所有的值都能訪問(wèn))#{headerValues['Accept-Encoding'][3]}initParam應(yīng)用初始化參數(shù)的Map,以參數(shù)名稱為關(guān)鍵字。(也稱為servlet上下文初始化參數(shù),在部署描述符中設(shè)置)#{initParam.adminEmail}param請(qǐng)求參數(shù)的Map,以param
名稱作為關(guān)鍵字。如果對(duì)給定的參數(shù)名稱有多個(gè)值,僅返回第1個(gè)值#{param.address}JSF的表達(dá)式語(yǔ)言(EL)隱含變量說(shuō)
明實(shí)
例paramValues請(qǐng)求參數(shù)的Map,以param
名稱作為關(guān)鍵字。對(duì)每個(gè)關(guān)鍵字,返回一個(gè)String數(shù)組(以便可以訪問(wèn)所有的值)#{param.address[2]}requestScope請(qǐng)求范圍內(nèi)的變量的Map,以名稱作為關(guān)鍵字#{requestScope.user-Preferences}sessionScope會(huì)話范圍內(nèi)的變量的Map,以名稱作為關(guān)鍵字#{sessionScope['user']}view當(dāng)前視圖#{view.locale}JSF表達(dá)式示例如何將URL中的參數(shù)傳遞到JSF程序中?如果你有下面的URL:http://your_server/your_app/product.jsf?id=777,JSF頁(yè)面上,你也可以使用預(yù)定義的變量訪問(wèn)參數(shù),例如:<h:outputTextvalue="#{param['id']}"/>注意:你必須直接調(diào)用該JSF頁(yè)面,并且使用servlet映射(mapping).如何添加上下文路徑到outputLink的URL中?在當(dāng)前的JSF實(shí)現(xiàn)中,當(dāng)在outputLink中定義的路徑以'/'開(kāi)始時(shí),沒(méi)有添加上下文路徑到URL中,請(qǐng)?jiān)赨RL中使用#{facesContext.externalContext.requestContextPath}前綴.例如:<h:outputLinkvalue="#{facesContext.externalContext.requestContextPath}/myPage.faces">托管Bean的方法處理導(dǎo)航的方法處理Action事件的方法處理ValueChange事件的方法處理輸入校驗(yàn)的方法實(shí)際操作演示托管Bean的分類Backing托管BeanController托管BeanModel托管BeanUtility托管Bean實(shí)際操作演示注意區(qū)分Backing-Bean和Controller-Bean初始化托管Bean的屬性使用<managed-property>標(biāo)簽<property-name><property-class><map-entries.../>othertags實(shí)際操作演示通過(guò)FacesContext訪問(wèn)應(yīng)用環(huán)境在一些特殊場(chǎng)景下,應(yīng)用程序依然需要在托管Bean中訪問(wèn)ServletAPI,JSF為這種需求提供了支持:通過(guò)FacesContext接口訪問(wèn)ServletAPIFacesContext接口的方法:getResponseStream()getResponseWriter()實(shí)際操作演示目錄MVC和JSF下載、安裝JSF及使用入門(mén)解讀JSF配置托管Bean和表達(dá)式語(yǔ)言導(dǎo)航模型使用UI標(biāo)簽創(chuàng)建視圖頁(yè)面JSF的運(yùn)行流程和生命周期利用JSF的消息導(dǎo)航模型當(dāng)用戶單擊按鈕或超鏈接時(shí),JSF可以根據(jù)導(dǎo)航規(guī)則轉(zhuǎn)向到其他頁(yè)面。JSF使用<navigation-rule>標(biāo)簽來(lái)配置導(dǎo)航規(guī)則,其有兩個(gè)有序的子元素:<from-view-id>,導(dǎo)航的起始頁(yè)面<navigation-case>,其子元素有:<from-action><from-outcome><to-view-id><redirect>導(dǎo)航模型Struts的頁(yè)面跳轉(zhuǎn)是在ActionBean中發(fā)生,execute方法最后返回一個(gè)actionForward來(lái)進(jìn)行跳轉(zhuǎn)。JSF則在事件處理方法中最后返回一個(gè)字符串,由系統(tǒng)在xml文件中匹配自動(dòng)進(jìn)行跳轉(zhuǎn)。在JSF中也可以通過(guò)在JSP頁(yè)面的CommandButton的action屬性中直接填寫(xiě)跳轉(zhuǎn)的別名直接跳轉(zhuǎn),而不必經(jīng)過(guò)事件處理方法的處理靜態(tài)導(dǎo)航配置方式將commandButton或commandLink的action屬性指定為一個(gè)靜態(tài)字符串在JSf配置文件中配置導(dǎo)航規(guī)則實(shí)際操作演示動(dòng)態(tài)導(dǎo)航配置方式將commandButton或commandLink的action屬性綁定到某個(gè)托管Bean的處理方法在JSf配置文件中配置導(dǎo)航規(guī)則實(shí)際操作演示目錄MVC和JSF下載、安裝JSF及使用入門(mén)解讀JSF配置托管Bean和表達(dá)式語(yǔ)言導(dǎo)航模型使用UI標(biāo)簽創(chuàng)建視圖頁(yè)面JSF的運(yùn)行流程和生命周期利用JSF的消息概述JSF應(yīng)用的三個(gè)核心組件:JSF容器管理的托管BeanUI標(biāo)簽組成的應(yīng)用界面及綁定關(guān)系導(dǎo)航規(guī)則本節(jié)主要學(xué)習(xí)JSF的標(biāo)簽用法UI標(biāo)簽概述JSF提供了大量的UI標(biāo)簽來(lái)簡(jiǎn)化創(chuàng)建視圖。使用這些標(biāo)簽,可以通過(guò)其value,binding,action,actionListener等屬性直接綁定到托管Bean的屬性,實(shí)例或者方法上。這也是JSF標(biāo)簽與JSP標(biāo)簽最大的區(qū)別。JSF包括兩組標(biāo)簽庫(kù):jsf_core.tld核心標(biāo)簽庫(kù)和html_basic.tld。JSFUI組件繼承關(guān)系(部分)JSF標(biāo)簽(JSF核心標(biāo)簽庫(kù))標(biāo)簽說(shuō)明f:validateLength驗(yàn)證組件值的長(zhǎng)度f(wàn):validateDoubleRange驗(yàn)證組件值的雙精度范圍f:validateLongRange驗(yàn)證組件值的長(zhǎng)整型范圍f:validator向組件添加驗(yàn)證器f:loadBundle加載資源包f:verbatim向頁(yè)面中添加標(biāo)簽f:selectItem指定UISelectOne
或UISelectMany
組件的一個(gè)項(xiàng)目f:selectItems指定UISelectOne
或UISelectMany
組件的多個(gè)項(xiàng)目JSF標(biāo)簽(JSF核心標(biāo)簽庫(kù))標(biāo)簽說(shuō)明f:view創(chuàng)建頂層視圖f:subview創(chuàng)建視圖的子視圖f:facet向組件添加facetf:param向組件添加參數(shù)f:attribute向組件添加屬性f:actionListener在父組件上注冊(cè)操作監(jiān)聽(tīng)器f:valueChangeListener向父組件注冊(cè)值變更監(jiān)聽(tīng)器f:converter注冊(cè)任意轉(zhuǎn)換器f:convertDateTime注冊(cè)日期時(shí)間轉(zhuǎn)換器f:convertNumber注冊(cè)數(shù)量轉(zhuǎn)換器JSF標(biāo)簽(JSFHTML標(biāo)簽)組件標(biāo)簽說(shuō)明UISelectOneh:SelectOneListbox單選列表框h:selectOneMenu單選菜單h:selectOneRadio單選按鈕集UISelectBooleanh:selectBooleanCheckbox單個(gè)復(fù)選框UISelectManyh:selectManyListbox復(fù)選框集h:selectManyCheckbox多行選擇列表框h:selectManyMenu多選菜單UIPanelh:panelGrid表示一個(gè)
HTML表格h:panelGroup組合一系列組件UIMessageh:message顯示一個(gè)組件的最近使用的消息UIMessagesh:messages顯示所有消息UIGraphich:graphicImage顯示一個(gè)圖像UIDatah:dataTable功能豐富的表格控件UIColumnh:column表示表格中的列JSF標(biāo)簽(JSFHTML標(biāo)簽)組件標(biāo)簽說(shuō)明UIFormh:form表示
HTML表單元素UIInputh:InputText單行文本輸入控件h:inputTextarea多行文本輸入控件h:InputSecret密碼輸入控件h:inputHidden隱藏字段UIOutputh:outputLabel顯示文本h:outputLink鏈接到另一頁(yè)面或某頁(yè)面上的特定位置h:outputFormat顯示格式化的信息h:outputText當(dāng)前行文本輸出UICommandh:commandButton表示一個(gè)按鈕h:commandLink表示一個(gè)鏈接UI標(biāo)簽的通用屬性idimmediaterenderedrequiredrequiredMessagevaluestyle……UI標(biāo)簽均具有的屬性表單標(biāo)簽h:form標(biāo)簽產(chǎn)生HTMLform元素。如果在名為/index.jsp的JSF頁(yè)面中使用了無(wú)屬性的h:form標(biāo)簽,則Form呈現(xiàn)器將產(chǎn)生如下的HTML代碼:可以為h:form指定style或styleClass屬性。建議為表單元素明確指定id屬性。一般需要開(kāi)發(fā)者提供頁(yè)面布局。<formid="_id0"method="post"action="/converter/index.faces"enctype="application/x-www-form-urlencoded">JSF標(biāo)簽(文本輸入)h:inputTexth:inputSecreth:inputTextarea<h:inputTextvalue="測(cè)試字符串"readonly="true"/><h:inputSecretvalue="#{form.passwd}"redisplay="true"/><h:inputTextareavalue="123456789012345"rows="3"cols="10"/><h:inputTextvalue="inputText"style="color:Yellow;background:Teal;"/>JSF標(biāo)簽(命令)h:commandButtonh:commandLinkh:outputLink<h:commandButtonvalue="按鈕"onclick="alert('buttonclicked')"type="button"/><h:outputLinkvalue=""><h:graphicImagevalue="java-dot-net.jpg"/><h:outputTextvalue=""/></h:outputLink><h:commandLinkvalue="歡迎"actionListener="#{form.useLinkValue}"action="#{form.followLink}"/>JSF標(biāo)簽(選擇)h:selectBooleanCheckboxh:selectManyCheckboxh:selectOneRadioh:selectOneListboxh:selectManyListboxh:selectOneMenuh:selectManyMenu選擇標(biāo)簽使用示例聯(lián)系我<h:selectBooleanCheckboxvalue="#{form.contactMe}"/>privatebooleancontactMe;publicvoidsetContactMe(booleannewValue){contactMe=newValue;}publicbooleangetContactMe(){returncontactMe;}<h:selectManyCheckboxvalue="#{form.colors}"><f:selectItemitemValue="Red"itemLabel="紅色"/><f:selectItemitemValue="Blue"itemLabel="藍(lán)色"/><f:selectItemitemValue="Yellow"itemLabel="黃色"/><f:selectItemitemValue="Green"itemLabel="綠色"/><f:selectItemitemValue="Orange"itemLabel="橘黃"/></h:selectManyCheckbox><h:selectOneRadiovalue="#{form.grade}"layout="pageDirection"><f:selectItemsvalue="#{form.grades}"/></h:selectOneRadio>privateSelectItem[]grades={newSelectItem(newInteger(1),"高中"),newSelectItem(newInteger(2),"???),newSelectItem(newInteger(3),"本科"),newSelectItem(newInteger(4),"碩士"),newSelectItem(newInteger(5),"博士")};publicSelectItem[]getGrades(){returngrades;}<h:selectOneListboxid="onelistbox"value="#{form.expert}"><f:selectItemitemValue="java"itemLabel="Java"/><f:selectItemitemValue="oracle"itemLabel="Oracle"/><f:selectItemitemValue="asp"itemLabel="ASP"/><f:selectItemitemValue="jsp"itemLabel="JSP"/></h:selectOneListbox><h:selectOneMenuid="onemenu"value="#{form.expert}"><f:selectItemitemValue="java"itemLabel="Java"/><f:selectItemitemValue="oracle"itemLabel="Oracle"/><f:selectItemitemValue="asp"itemLabel="ASP"/><f:selectItemitemValue="jsp"itemLabel="JSP"/></h:selectOneMenu>JSF標(biāo)簽(數(shù)據(jù)表格標(biāo)簽)屬性說(shuō)明bgcolor
設(shè)置表格背景色border設(shè)置表格邊框?qū)挾萩ellpadding設(shè)置表格單元格周圍的邊距cellspacing設(shè)置表格單元格之間的間距first表格中所顯示的第一行的索引frame指定表格四周的邊框樣式;有效值:none、above、below、hsides、vsides、lhs、rhs、box、borderstyleClass指定整個(gè)表格的CSS類rowClasses行的CSS類列表,用逗號(hào)分隔列表columnClasses列的CSS類列表,用逗號(hào)分隔列表headerClass
表格標(biāo)題的CSS類footerClass用于表格頁(yè)腳的CSS類rules單元格之間的行樣式;有效值:groups、rows、columns、allvar數(shù)據(jù)表格所創(chuàng)建的變量名稱,表示該值中的當(dāng)前項(xiàng)目……<f:view><h:form><h:dataTablebgcolor="lightblue"value="#{Employeedata.employeelist}"var="employees"border="5"cellpadding="5"cellspacing="2"><h:column><f:facetname="header"><h:outputTextid="headerText1"value="姓名"/></f:facet><h:outputTextvalue="#{}"/></h:column><h:column><f:facetname="header"><h:outputTextid="headerText2"value="職位"/></f:facet><h:outputTextvalue="#{employees.position}"/></h:column></h:dataTable></h:form></f:view>JSF標(biāo)簽(數(shù)據(jù)表格標(biāo)簽)實(shí)際操作演示用戶注冊(cè)頁(yè)面示例目錄MVC和JSF下載、安裝JSF及使用入門(mén)解讀JSF配置托管Bean和表達(dá)式語(yǔ)言導(dǎo)航模型使用UI標(biāo)簽創(chuàng)建視圖頁(yè)面JSF的運(yùn)行流程和生命周期利用JSF的消息本節(jié)概述JSF是一個(gè)Web應(yīng)用,也會(huì)遵循請(qǐng)求/響應(yīng)的架構(gòu),與JSP的生命周期完全相似:客戶端發(fā)送一個(gè)HTTP請(qǐng)求,服務(wù)器端對(duì)請(qǐng)求進(jìn)行處理之后,向客戶端送回HTTP響應(yīng),整個(gè)JSP生命周期完成。JSF將請(qǐng)求/響應(yīng)的生命周期細(xì)化為更多階段,從而支持更加復(fù)雜的UI組件模型JSF將用戶請(qǐng)求分成兩種:初始請(qǐng)求:當(dāng)用戶直接向某個(gè)頁(yè)面發(fā)送請(qǐng)求時(shí),請(qǐng)求沒(méi)有附加任何的參數(shù)信息。提交表單:?jiǎn)螕舯韱蔚奶峤话粹o、提交超鏈接時(shí),就會(huì)發(fā)生提交表單請(qǐng)求。JSF的6個(gè)生命周期JSF的6個(gè)生命周期JSF提供了PhaseId類來(lái)代表生命周期階段,是一個(gè)枚舉類,使用的常量有:ANY_PHASE:任意一個(gè)生命周期階段RESTORE_VIEW:恢復(fù)視圖階段APPLY_REQUEST_VALUES:應(yīng)用請(qǐng)求值階段PROCESS_VALIDATIONS:處理輸入校驗(yàn)階段UPDATE_MODEL_VALUES:更新模型的值階段INVOKE_APPLICA
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 石船經(jīng)濟(jì)課程設(shè)計(jì)
- 藥品生產(chǎn)大學(xué)課程設(shè)計(jì)
- 幼兒手勢(shì)舞教學(xué)課程設(shè)計(jì)
- 電子鐘表課程設(shè)計(jì)
- 新冉的課程設(shè)計(jì)
- 穿鞋帶的課程設(shè)計(jì)
- 資產(chǎn)負(fù)債表優(yōu)化策略計(jì)劃
- 酒店餐飲行業(yè)安全生產(chǎn)工作總結(jié)
- 青少年培訓(xùn)機(jī)構(gòu)前臺(tái)接待總結(jié)
- 家具制造工藝改良
- 機(jī)械設(shè)計(jì)作業(yè)集
- 食品快速檢測(cè)實(shí)驗(yàn)室要求
- 冬季心血管病預(yù)防知識(shí)
- DB36-T 720-2013 汽車加油站防雷裝置檢測(cè)技術(shù)規(guī)范
- 鐵路護(hù)路巡防服務(wù)投標(biāo)方案(技術(shù)方案)
- 奧數(shù)試題(試題)-2023-2024學(xué)年四年級(jí)下冊(cè)數(shù)學(xué)人教版
- 《昆蟲(chóng)記》感悟心得體會(huì)
- 白云湖國(guó)家濕地公園投資估算表
- 醫(yī)院消防應(yīng)急預(yù)案演練腳本大全(17篇)
- 中級(jí)財(cái)務(wù)會(huì)計(jì)學(xué)(安徽財(cái)經(jīng)大學(xué))智慧樹(shù)知到期末考試答案2024年
- 人教版(2019)必修第三冊(cè)Unit 4 Space Exploration 課文語(yǔ)法填空
評(píng)論
0/150
提交評(píng)論