Web開發框架中的架構模式比較(四) (轉)

worldblog發表於2007-12-14
Web開發框架中的架構模式比較(四) (轉)[@more@]

提供驗證功能的: CompareValidator驗證兩個控制元件輸入之間的比較,RangeValidator檢查的輸入是否在指定的上限和下限之間;RegularExpressionValidator 控制元件檢查輸入是否與某個正則所定義的相匹配(社會保障號、電子地址、電話號碼、郵政編碼等);RequiredFieldValidator 控制元件確保使用者不會略過某個輸入;CustomValidator 控制元件建立自定義伺服器和客戶端驗證程式碼。稍後會舉例說明。:namespace prefix = o ns = "urn:schemas--com::office" />

通常會把驗證規則提出來,放在一個驗證規則裡。 提供驗證兩種方式。一種是過載org.apache.struts.action.ActionForm類的validate方法,一種是定義Validator Plug-In檔案,validator-rules.xml。Apache Cocoon也提供了類似的驗證規則檔案。稍後舉例說明。

的例子

  摘自.Net框架文件,其餘部分省略,只保留了關於RegularExpressionValidator的部分。本例中,id為RegularExpressionValidator1的控制元件的ControlToValidate屬性為TextBox1,所以,RegularExpressionValidator1負責驗證TextBox1是否符合正規表示式"d{5}"——5個數字。

 


 

 runat="server"/>


 


 


 

 id="RegularExpressionValidator1"


  ControlToValidate="TextBox1"


  ValidationExpression="d{5}"


  Display="Static"


  EnableClientScript="false"


  ErrorMessage="Zcode must be 5 numeric digits"


  runat="server"/>


 


的例子

下面的例子從Apache Struts的使用者文件中摘錄出來。Apache Struts提供的Validation機制非常強大,能夠實現基於其它輸入域的條件驗證,即,如果另外一個或幾個輸入域都符合相應的情況,那麼,驗證當前域是否符合某種條件。

  property="firstName" indexedListProperty="dependents"

  depends="requiredif">

 

 

  field[0]

  lastName

 

 

  field-indexed[0]

  true

 

 

  field-test[0]

  NOTNULL

 

  property="dob"

  indexedListProperty="dependents"

  depends="requiredif,date">

 

 

  field[0]

  lastName

 

 

  field-indexed[0]

  true

 

 

  field-test[0]

  NOTNULL

 

  property="coverageType"

  indexedListProperty="dependents"

  depends="requiredif">

 

 

  field[0]

  lastName

 

 

  field-indexed[0]

  true

 

 

  field-test[0]

  NOTNULL

 

 

  field[1]

  insureDependents

 

 

  field-test[1]

  EQUAL

 

 

  field-value[1]

  true

 

 

  field-join

  AND

 

的例子

下面的例子是Apache Cocoon的教學中的檔案。對id和name兩個域進行驗證。同時,這個檔案定義了頁面元素和資料之間的繫結。下一節就要闡述這個問題。

<>

 

 

 

 

 

 

 

 

 

  personnel

 

 

   

 

 

   

 

 

正如上一節最後一個例子(Apache Cocoon)所示,很多web開發框架提供頁面元素和資料庫欄位的直接繫結。

.NET 框架包含三個便於顯示大量資料的控制元件:Repeater 控制元件、DataList 控制元件和 DataGrid 控制元件。這三個控制元件都使用相似的資料繫結過程,繫結到DataSet、DataReader或DataView。下面的程式碼示例從.Net框架文件摘錄,顯示如何將 SQL 資料庫查詢返回的 DataSet 繫結到 DataGrid 控制元件。







 


 

Simple SELECT to a DataGrid Control

 


 


  id="MyDataGrid" runat="server"


  Width="700"


  BackColor="#ccccff"


 BorderColor="black"


  ShowFooter="false"


 CellPadding=3


 CellSpacing="0"


  Font-Name="Verdana"


  Font-Size="8pt"


  HeaderStyle-BackColor="#aaaadd"


  EnableViewState="false"


  />




多語言支援策略基本上都採取一種類似於查多本字典的模式。先舉一個類比例子來說明,比如,我們有英英字典,英漢字典,英德字典,英法字典,對於一個英文單詞,每本字典都有對應語言的單詞,滿足不同語言的使用者的需要。我們把要查的英文單詞稱為key,所有的字典稱為資原始檔resource file,查出來的對應語言的單詞,就是應該顯示給使用者的內容。、

上述模式簡單而常見,不再列出例子程式碼,下面只進行簡單的說明。

.Net框架透過一個重要的資源管理類System.Resources.SDK.CHS/cpref/html/frlrfsystemresourcesresourcemanagerclasstopic.htm">ResourceManager,來管理在應用程式中使用的不同特定於區域性的資源。方可使用 和 兩種方法訪問特定區域性的資源。這兩個方法的引數都包括一個key,和一個本地語言資訊。.Net的資原始檔字尾是DLL。

Apache Struts專案的類org.apache.struts.util.MessageResources的getMessage方法提供了類似的功能。Apache Struts專案提供了一個擴充套件的HTML Tag —— Message,也起著多語言支援、本地化的作用。Struts的資原始檔字尾是properties,格式按照java properties檔案的格式。

Apache Cocoon專案提供了一類稱為i18n的Tranormer,用來實現多語言支援。常用的標記如


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-993466/,如需轉載,請註明出處,否則將追究法律責任。

相關文章