使用 Translator 模式構建更好的網站(3)_Windows教程
教程Tag:暫無Tag,歡迎添加,賺取U幣!
在此 JSP 文件中,要注意的第一點是它有一個 page 指令標記。這是因為它需要繼承一個超類,并需要導入兩個類。JSP 文件繼承了超類 com.ibm.igs.ispkcm.translator.JspBase,因為 JspBase 包括一些很好的實用函數,它使得 JSP 文件可包含更少的代碼。該 JSP 文件所用的主要實用函數是 displayErrors() 和 highLightErrors()。該 page 指令導入 LoanTranslator 和 Hashtable,因為 JSP 文件中引用了這兩個類,導入這兩個類是為了以后在此 JSP 代碼中引用這兩個類時不必使用它們完全限定的類名。以下代碼顯示了 import 語句的一個示例:
JSP 文件中第一行真正的 Java 代碼獲取 Translator 對象的一個實例,然后獲取一個 Hashtable,其中存儲著屬于 Translator 對象的那個實例的錯誤。因為 JSP 文件(在編譯后)是一個 servlet,所以它是一個無狀態的服務對象。Translator 對象將在特定 JSP 文件或 servlet 的不同往返之間維護必要的狀態信息。狀態信息應僅限于網站訪問者輸入的值和要向網站訪問者顯示的任何處理錯誤。因為 Translator 對象的每個實例都與一個特定的網站訪問者相關聯,所以 JSP 文件調用 Translator 對象的 getInstance(HttpServletRequest) 方法。由于為該方法傳遞的是一個 HttpServletRequest 對象,所以該方法將能夠檢索與該網站訪問者的 HttpSession 相關的 Translator 實例。
在此 JSP 文件示例中,網站訪問者將在表單的頂部看到所有處理錯誤。用來顯示這些錯誤消息的 HTML 是使用 <%= displayErrors(htErrors) %> 表達式輸出的。displayErrors() 方法是從 JSP 文件的超類 JspBase 中繼承而來的。有了 displayErrors(),用于顯示錯誤消息的所有邏輯都被集中在一起,從而簡化了維護工作。
下面這段代碼模板適用于表單上的每個輸入域:
highLightErrors() 是從 JSP 文件的超類 JspBase 中繼承而來的。如果某個輸入域有錯誤,該方法將突出顯示該輸入域的標簽。該方法接收兩個參數:String 和Hashtable。該 Hashtable 是其中存儲著從 Translator 的實例檢索而來的錯誤的 Translator。String 是正在檢查其是否有錯誤的輸入域的名稱。如果存在與該域相關的錯誤,highLightErrors() 就會返回突出顯示此輸入域的標簽的 HTML。
在此代碼模板中,須注意的重要一點是:INPUT 標記的 name 屬性是由一個表達式設置的,該表達式使用 LoanTranslator 對象的 BORROWER_LAST_NAME 常量。因為在 JSP 文件中引用此域名時使用了一個常量,所以 Translator 對象和 servlet 的調試變得更加容易。使用常量更為容易,因為無論何時開發人員更改此域的名稱,他們都會獲得一個編譯錯誤,而非運行時錯誤。查找編譯錯誤要容易得多,因為編譯器會立即指出錯誤,而運行時錯誤到調試和測試期間才能被發現。
| <%@ page extends="com.ibm.igs.ispkcm.translator.JspBase" import="com.ibm.developerworks.translatorpattern.LoanTranslator, Java.util.Hashtable"%> |
JSP 文件中第一行真正的 Java 代碼獲取 Translator 對象的一個實例,然后獲取一個 Hashtable,其中存儲著屬于 Translator 對象的那個實例的錯誤。因為 JSP 文件(在編譯后)是一個 servlet,所以它是一個無狀態的服務對象。Translator 對象將在特定 JSP 文件或 servlet 的不同往返之間維護必要的狀態信息。狀態信息應僅限于網站訪問者輸入的值和要向網站訪問者顯示的任何處理錯誤。因為 Translator 對象的每個實例都與一個特定的網站訪問者相關聯,所以 JSP 文件調用 Translator 對象的 getInstance(HttpServletRequest) 方法。由于為該方法傳遞的是一個 HttpServletRequest 對象,所以該方法將能夠檢索與該網站訪問者的 HttpSession 相關的 Translator 實例。
| <% LoanTranslator ltLoan = LoanTranslator.getInstance(request); Hashtable htErrors = ltLoan.getErrors(); %> |
在此 JSP 文件示例中,網站訪問者將在表單的頂部看到所有處理錯誤。用來顯示這些錯誤消息的 HTML 是使用 <%= displayErrors(htErrors) %> 表達式輸出的。displayErrors() 方法是從 JSP 文件的超類 JspBase 中繼承而來的。有了 displayErrors(),用于顯示錯誤消息的所有邏輯都被集中在一起,從而簡化了維護工作。
下面這段代碼模板適用于表單上的每個輸入域:
| <%= hightLightErrors(ltLoan.BORROWER_LAST_NAME, htErrors) %>Borrower Last Name: <INPUT name="<%= ltLoan.BORROWER_LAST_NAME %>" value="<%= ltLoan.getBorrowerLastName() %>"> |
highLightErrors() 是從 JSP 文件的超類 JspBase 中繼承而來的。如果某個輸入域有錯誤,該方法將突出顯示該輸入域的標簽。該方法接收兩個參數:String 和Hashtable。該 Hashtable 是其中存儲著從 Translator 的實例檢索而來的錯誤的 Translator。String 是正在檢查其是否有錯誤的輸入域的名稱。如果存在與該域相關的錯誤,highLightErrors() 就會返回突出顯示此輸入域的標簽的 HTML。
在此代碼模板中,須注意的重要一點是:INPUT 標記的 name 屬性是由一個表達式設置的,該表達式使用 LoanTranslator 對象的 BORROWER_LAST_NAME 常量。因為在 JSP 文件中引用此域名時使用了一個常量,所以 Translator 對象和 servlet 的調試變得更加容易。使用常量更為容易,因為無論何時開發人員更改此域的名稱,他們都會獲得一個編譯錯誤,而非運行時錯誤。查找編譯錯誤要容易得多,因為編譯器會立即指出錯誤,而運行時錯誤到調試和測試期間才能被發現。
相關Windows教程:
- 相關鏈接:
- 教程說明:
Windows教程-使用 Translator 模式構建更好的網站(3)
。