jsf基礎使用方法[email protected]

 
1。在新建的工程中添加jsf框架,將自動生成一web.xml文件。內容如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee  http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  <context-param>
    <param-name>javax.faces.CONFIG_FILES</param-name>
    <param-value>/WEB-INF/faces-config.xml</param-value>
  </context-param>
  <servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>0</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.faces</url-pattern>
  </servlet-mapping>
</web-app>
2。在src中編寫一個bean,不同於Struts的是這個bean將集合FormBean和ActionBean,這就和以前我們寫java類十分相似了,而且不用繼承任何特定類。寫好這個bean以後在WEB-INF下的faces-config.xml中加入下列一段代碼,將該bean轉換成jsf的managed Bean。
<managed-bean>
  <managed-bean-name>該bean的別名</managed-bean-name>
  <managed-bean-class>
   該bean所在位置(包名+類名)
  </managed-bean-class>
  <managed-bean-scope>該bean的存在範圍(session,request,application,none四種)</managed-bean-scope>
 </managed-bean>
跳轉的映射是加入如下一段:
<navigation-rule>
  <from-view-id>/輸入的頁面名</from-view-id>
  <navigation-case>
   <from-outcome>代表跳轉到哪裏的字符串(這裏可以隨便定義)</from-outcome>
   <to-view-id>/跳轉的頁面名</to-view-id>
  </navigation-case> 
 </navigation-rule>
3。新建一個帶jsf標籤的jsp頁面,<body></body>中輸入如下代碼:
<f:view>
  <h:outputText value="#{backing bean名.字段名}"></h:outputText>   //要輸出到頁面的值
  <h:form>    //form
   <h:inputText value="#{backing bean名.字段名}"></h:inputText><br/>    //要輸入的字段
   <h:commandButton action="#{backing bean名.業務方法}" value="按鈕文字"></h:commandButton>
  </h:form>
 </f:view>
4。使用jsf自帶的驗證組件
在輸入框標籤中加入required="true"表示該輸入框必須輸入。
JSF提供了三種標準驗證器:<f:validateDoubleRange>、<f:validateLongRange>、<f:validateLength>
使用方法是將要驗證的標籤插入輸入框標籤中,即用<></>將其套在裏面。具體使用參看幫助文檔。
5。使用自定義驗證
(1)先在src目錄下創建一個驗證類,要實現Validator接口的validate(FacesContext arg0, UIComponent arg1, Object arg2)方法並拋出ValidatorException異常,如下:
public void validate(FacesContext arg0, UIComponent arg1, Object arg2) throws ValidatorException { 
    if(驗證不通過條件){
   FacesMessage fm = new FacesMessage(FacesMessage.SEVERITY_ERROR, "數值不通過原因", "顯示在頁面上的信息");
   throw new ValidatorException(fm);
  }
}
(2)在faces-config.xml中加入以下一段:
<validator>
  <validator-id>驗證類的別名</validator-id>
  <validator-class>驗證類的包名+類名</validator-class>
</validator>
(3)把<f:validator validatorId="驗證類別名" />用需要驗證的標籤套住,要輸出錯誤信息使用<h:message for="輸入框的ID號"></h:message>
6。jsf的國際化
(1)在src目錄下創建xxx.properties文件,並在裏面將國際化需要的內容輸入,這個文件與struts的國際化文件相同。
(2)在faces-config.xml中加入如下代碼:
<application>
  <message-bundle>國際化文件的前綴名(不含_zh_CN之類)</message-bundle>
  <locale-config>
   <default-locale>en</default-locale>(默認國際化語言,只能有1個)
   <supported-locale>zh_CN</supported-locale>(支持的國際化語言,可以多個)
  </locale-config>
 </application>
(3)在jsp頁面中添加如下代碼(爲了支持多種語言,需要將html的編碼改爲utf-8):
<f:view locale="設置顯示的語言,即後綴,如zh_CN">
   <f:loadBundle basename="國際化文件前綴名" var="國際化文件別名" />
   <h:outputLabel value="#{別名['鍵名']}"></h:outputLabel>
</f:view>
(4)也可通過使用一個屬性來讓用戶自行選擇所需的語言,jsp頁面中的代碼如下(該屬性定爲session):
<f:view locale="#{cl.language}">         //讀出用戶選擇的語言
   <f:loadBundle basename="message" var="m" />
   <h:outputLabel value="#{m['label.showtext']}"></h:outputLabel>
   <h:form>
    <h:selectOneMenu value="#{cl.language}">            //使用下拉框取得用戶選擇值
     <f:selectItem itemValue="en" itemLabel="#{m['select.en']}" />
     <f:selectItem itemValue="zh_CN" itemLabel="#{m['select.zh']}" />
    </h:selectOneMenu>
    <h:commandButton type="submit" action="#{cl.change}" value="go"></h:commandButton>   //只是跳轉的方法
   </h:form>
</f:view>
jsf標籤說明:
標籤 說明
view 創建頂層視圖
subview 創建視圖的子視圖
facet 向組件添加 facet
param 向組件添加參數
attribute 向組件添加屬性
actionListener 在父組件上註冊操作監聽器
valueChangeListener 向父組件註冊值變更監聽器
converter 註冊任意轉換器
convertDateTime 註冊日期時間轉換器
convertNumber 註冊數量轉換器
validateLength 驗證組件值的長度
validateDoubleRange 驗證組件值的雙精度範圍
validateLongRange 驗證組件值的長整型範圍
validator 向組件添加驗證器
loadBundle 加載資源包
verbatim 向頁面中添加標籤
selectItem 指定 UISelectOne 或 UISelectMany 組件的一個項目
selectItems 指定 UISelectOne 或 UISelectMany 組件的多個項目


組件 標籤 說明
UIForm form 表示 HTML表單元素
UIInput InputText 單行文本輸入控件
  inputTextarea 多行文本輸入控件
  InputSecret 密碼輸入控件
  inputHidden 隱藏字段
UIOutput outputLabel 顯示文本
  outputLink 鏈接到另一頁面或某頁面上的特定位置
  outputFormat 顯示格式化的信息
  outputText 當行文本輸入
UICommand commandButton 表示一個按鈕
  commandLink 表示一個鏈接
UISelectOne SelectOneListbox 單選列表框
  selectOneMenu 單選菜單
  selectOneRadio 單選按鈕集
UISelectBoolean selectBooleanCheckbox 單個複選框
UISelectMany selectManyListbox 複選框集
  selectManyCheckbox 多行選擇列表框
  selectManyMenu 多選菜單
UIPanel panelGrid 表示一 個 HTML 表格
  panelGroup 組合一系列組件
UIMessage message 顯示一個組件的最近使用的消息
  messages 顯示所有消息

UIGraphic
graphicImage 顯示一個圖像
UIData dataTable 功能豐富的表格控件
UIColumn column 表示表格中的列
表單 h:form 產生 HTML form 元素
 
如何用JSF標籤進行IF ELSE 判斷?
<c:if test="${'true' == TestData.isDebug}">         //JSTL的IF標籤
    <h:outputText value="Begin local testing" />    //JSF的輸出標籤
</c:if>
<c:if test="${'false' == TestData.isDebug}">
    <h:outputText value="End local testing" />
</c:if>
把上邊的JSTL換成JSF做判斷之後並顯示寫成:
<h:outputText value="Begin local testing" rendered="#{'true' == TestData.isDebug}"/>
 
<h:outputText value="End local testing" rendered="#{false== TestData.isDebug}"/>
 
有關於JSF的循環、迭代、監聽器==的使用方法以後會了在貼出來~~
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章