<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    AppFuse學習筆記-視圖層

    1. 程序描述
        視圖層主要由JSP網頁構成,此外還包括Resource Bundle資源文件及ActionForm Bean、Validation等,這些組件提供對國際化、接收用戶輸入的表單數據、表單驗證和錯誤處理等的支持。
        與User的視圖層有關的文件有:
        userList.jsp:用戶列表頁面,用于具有管理權限的用戶對其他用戶的管理。
        userForm.jsp:用戶信息頁面,用于對用戶信息的增、刪、改
        UserForm.java:與用戶信息表單對應的ActionForm Bean
        validation.xml:對用戶信息表單進行驗證的配置文件
        Resource Bundle資源文件,中文的就是ApplicationResource_Zh_cn.properties
        default.jsp:用于復合網頁的sitemesh文件
        JavaScript、CSS文件

    2. JSP頁面
        與用戶相關的JSP頁面包括用戶列表和用戶信息。head及foot等通用信息放置在head.jsp、foot.jsp中,因此userList.jsp及userForm.jsp只包含與業務相關的標簽。下面介紹主要的標簽功能:
        <logic:messagesPresent>:判斷指定的消息是否存在。若指定message屬性為true,則從request范圍內 檢索屬性key為Globals.MESSAGE_KEY的ActionMessages對象。若不指定屬性,則默認檢索屬性key為 Globals.ERROR_KEY的ActionMessages對象。在本系統中一個檢索Success消息,一個檢索Error消息。
        <fmt:message>:JSTL標簽。用于輸出Resource Bundle中的一條消息。
        <bean:struts>:用于檢索Struts框架內在的對象,如ActionFormBean、ActionForward、 ActionMapping。在這里用于在JSP頁面上定義一個ActionForward 變量以方便其它地方的引用。forward為struts-config.xml中定義的global-forward。
        <c:set>:JSTL標簽。用于定義一個變量,以方便其它地方的引用。
        <c:out>:JSTL標簽。用于在頁面上顯示一個EL表達式的值,如顯示<c:set>定義的變量。EL是JSTL采用的簡單的表達式語言,該語言提供一個訪問和操作應用程序數據的簡單方式。
        <c:if><c:when><c:forEach><c:choose>:JSTL標簽。用于處理條件的標記,根據特定的邏輯條件來控制輸出網頁內容,或者循環遍歷集合中的所有元素。
        <display>:Display Tag的標簽,用于顯示控制層返回的List。可以方便的定制表格是否分頁、對列排序、導出數據等。
        <html:form>:用來定義HTML表單。Struts的HTML標簽可以和標準的HTML元素完成相同的功能,Struts框架能夠把表單中的數據自動映射到相應的ActionForm Bean中。
        <html:text><html:password><html:hidden>:在表單上生成相應的HTML元素。
        <html:submit><html:cancel>:在表單上生成提交按鈕和取消按鈕。當用戶按下按鈕時,將產生一個提交事 件或取消事件,由Action類捕獲。本系統中<html:submit><html:cancel>的屬性相同(均為 method),用戶按下提交按鈕或取消按鈕后執行哪個方法由lookupMethods.properties決定。
        <html-el:multibox>:在表單上生成HTML的CheckBox標簽。html-el使用了JSTL擴展,可以使用EL表達式。
        <html:messages><html:errors>:用于在網頁中輸出消息。<html:errors>用 于輸出錯誤消息,本系統中用于顯示表單中字段級的錯誤信息,<html:messages>顯示全局的消息。
        自定義標簽:
        在你最初運行ant new時,AppFuse就會根據你鍵入的項目名自動生成一個標簽文件,在userForm.jsp中你會看到這個標簽。
        <YOURAPPNAME:label>:它用于顯示表單輸入域前的提示文本,對文本添加了一些特別的樣式,如在必填項前自動加"*"號等。
        <YOURAPPNAME:country>:userForm中有設置國家一項,該標簽用于顯示國家的下拉列表。
        <YOURAPPNAME:constants>:用于在頁面上顯示常量類org.appfuse.Constants中的常量的值。

    3. ActionForm Bean
        ActionForm Bean是Struts提供的表單數據傳輸對象,用于在視圖層和控制層之間傳遞HTML表單數據。控制層可以從ActionForm Bean中讀取用戶輸入的表單數據,也可以把來自模型層的數據存放到ActionForm Bean中,然后把它返回給視圖。
        User表單的ActionForm Bean為UserForm。UserForm繼承BaseForm。BaseForm是ActionForm的子類對象,擴展了三個通用方法: toString()、equals(Object o) 和hashCode()。并定義了一個驗證,用于允許用戶在點擊"刪除"或"取消"按鈕時表單無須驗證。
        UserForm中定義了與用戶信息表單中的字段對應的屬性。

    4. Validator驗證框架
        Validator驗證框架負責數據驗證,采用基于XML的配置文件來配置驗證規則。其相關的文件有:
        validation.xml:針對具體的Struts表單,為ActionForm配置所需的驗證規則。
        validator-rules.xml:框架自帶文件,包含了一組通用的驗證規則。
        validator-rules-custom.xml:自定義驗證規則。本系統中定義了驗證兩個指定的輸入域值是否相等的規則。用于驗證密碼和確認密碼 是否相等。其實將這個方法稍微修改一下,把“=”變為“<、>”就可以驗證一個域不能大于/小于另外一個域,非常的實用。
        Resource Bundle:定義驗證失敗時顯示的提示文本。Resource Bundle 中以errors為前綴的Key絕大部分用于Validator的錯誤提示。
        下面是在validation.xml 中配置的userForm驗證規則
          <form name="userForm">
                  <field property="username"
                         depends="required">

                      <arg0 key="userForm.username"/>
                  </field>
        ……………………………
        </form>
        該配置通過depends="required"定義了userForm的username字段即用戶名是必填項。
        <arg0 key="userForm.username"/>聲明了該字段所對應的文本在Resource Bundle中的Key。Validator會在Resource Bundle中尋找errors.required對應的文本:'{0}' 為必填項,將userForm.username對應的文本帶入{0}。如用戶沒有填寫該項,Validator會提示“'用戶名' 為必填項”的消息。
        validation.xml中使用正則表達式定義了一些簡單的全局的規則,如電話號碼的格式等。
        默認情況下,Validator框架在Web服務器端執行表單驗證。validator-rules.xml里已經定義了客戶端JavaScript的生成規則,可以在JSP網頁中生成JavaScript腳本。需要進行客戶端驗證時,在JSP中包含:
        <html:javascript formName="userForm" cdata="false"
          dynamicJavascript="true" staticJavascript="false"/>
        <script type="text/javascript"
          src="<c:url value="/scripts/validator.jsp"/>"></script>
        并在<html:form>中定義onsubmit事件:
        onsubmit="return validateUserForm(this)"
        在userForm表單的提交和取消按鈕中包含了onclick="bCancel=false"事件。bCancel是Validator定義的是否進行驗證的變量。當用戶點擊刪除或取消按鈕時,表單無須驗證,此時bCancel= true。

    posted on 2007-06-18 18:11 chenguo 閱讀(205) 評論(0)  編輯  收藏 所屬分類: J2ee Dev

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導航

    統計

    留言簿

    隨筆分類(1)

    文章分類(52)

    好友 小山的博客

    最新隨筆

    最新評論

    主站蜘蛛池模板: 亚洲国产精品无码专区影院| 亚洲福利在线播放| 亚洲综合一区二区| 久久青草免费91线频观看不卡| 亚洲一区精品伊人久久伊人| 欧洲精品码一区二区三区免费看| 午夜亚洲福利在线老司机| 美女被免费网站在线视频免费| 国产精品视_精品国产免费| 亚洲av午夜国产精品无码中文字| 日韩电影免费在线| 亚洲6080yy久久无码产自国产| 成人性生交视频免费观看| 欧洲亚洲综合一区二区三区| 亚洲?V乱码久久精品蜜桃| 一级毛片人与动免费观看| 精品国产亚洲男女在线线电影| 精品久久久久久国产免费了| 亚洲精品无码不卡在线播HE| 日本免费电影一区二区| 亚洲日产2021三区在线| 在线免费观看一区二区三区| 精品久久久久亚洲| 亚洲熟妇av一区二区三区| 蜜桃视频在线观看免费视频网站WWW| 亚洲精品美女在线观看播放| 日韩精品成人无码专区免费| 国产精品亚洲精品日韩电影| 中文亚洲AV片不卡在线观看| 99久热只有精品视频免费看| 中文字幕精品三区无码亚洲| 国产精品免费视频播放器| 国内精品99亚洲免费高清| 亚洲免费视频播放| 可以免费观看一级毛片黄a| 羞羞视频免费网站在线看| 亚洲熟妇av一区| 免费看国产一级特黄aa大片| 免费成人在线电影| 亚洲一区二区三区写真| 国产亚洲一区二区三区在线不卡|