MyResources_xx.properties - 包含ISO語言編程為“xx”(查看ResourceBundle的Java文檔頁面得到一個當前列表的聯結)的同樣的訊息。對於上面的訊息的法語版,你可以有這個條目:
你可以有你需要的任意多的語言的資源套件檔案。
當你在web應用程式展開描述符中配置controller servlet時,你需要在一個初始化參數中定義的一件事是應用程式的資源套件的基礎名。在上述的情況中,這應該是com.mycompany.mypackage.MyResources 。
3.3 表單和FormBean的互動
大部分web開發人員曾經使用HTML的標準效能來建立表單,例如使用
標記。使用者希望互動程式具有一定的行為,這些期待中的一個與錯誤處理有關 -- 如果使用者出現一個錯誤,應用程式應該允許他們僅僅修改需要修改的部分 -- 而不需要重新敲入當前頁面或表單中的任何其它資訊。
使用標準的HTML和JSP編程來完全實現這個期望是單調而繁重的。舉例來說,一個使用者名稱欄位的輸入元素看起來可以象是這樣(在JSP中)
<input type="text" name="username"value="<%= loginBean.getUsername() %>"> |
這很難敲對,會把沒有編程概念的HTML開發人員搞糊塗,並且會在HTML編輯器中造成問題。取而代之的是,Struts提供了一種全面的基於JSP 1.1的定製標記庫功能的機制來建立表單。上面的情況使用Struts處理後將象是這樣:
<struts:text name="username"/> |
沒有必要再顯式地涉及到從中獲得初始值的JavaBean。這將由架構自動處理。
3.3.1 使用Struts建立表單
一個完整的註冊表單將示範Struts相對於直接使用HTML和標準的JSP功能怎樣極大地減輕了處理表單的痛苦。考慮以下稱為logon.jsp的頁面(來自Struts的例子程式):
<%@ page language="java" %><%@ taglib uri="/WEB-INF/struts.tld" prefix="struts" %><html><head><title><struts:message key="logon.title"/></title><body bgcolor="white"><struts:errors/><struts:form action="logon.do" name="logonForm"type="org.apache.struts.example.LogonForm"/><table border="0" width="100%"><tr><th align="right"><struts:message key="prompt.username"/></th><td align="left"><struts:text name="username" size="16"/></td></tr><tr><th align="right"><struts:message key="prompt.password"/></th><td align="left"><struts:password name="password" size="16"/></td></tr><tr><td align="right"><struts:submit><struts:message key="button.submit"/></struts:submit></td><td align="right"><struts:reset><struts:message key="button.reset"/></struts:reset></td></tr></table></struts:form></body></html> |
下面的條目基於這個例子示範在Struts中處理表單的關鍵的特性:
taglib指令告訴JSP頁面編譯器從哪裡找到Struts標記庫的 標記庫描述符 。在這種情況下,我們使用struts作為首碼來標識來自這個庫中的標記,但是可以使用任何你想用的首碼。
這個頁面使用了幾個 message 標記來從一個包含有這個應用程式所有資源的 MessageResources 對象中尋找國際化的訊息字串。為了讓這個頁面能夠工作,以下的訊息關鍵字必須在這些資源中被定義:
logon.title - 註冊頁面的標題
prompt.username - 一個 “Username:” 提示字串
prompt.password - 一個 “Password:” 提示字串
button.submit - “Submit”按鈕的標籤
button.reset - “Reset”按鈕的標籤
當使用者註冊時,應用程式可以在使用者的session中儲存一個 Locale 對象。這個 Locale 將用來選擇適當語言的訊息。這使得給使用者一個切換語言的可選項實現起來變的容易了 -- 僅僅改變儲存的 Locale 對象,所有的訊息就會自動切換。
errors 標記顯示由一個商業邏輯組件儲存的任何出錯訊息,或者如果沒有出錯訊息儲存就什麼都沒有。這個標記將在下面做深入的描述。
form 標記基於指定的屬性對一個HTML