今天開始開工.
在webwork.property中加入
webwork.configuration.xml.reload=true之后,原來正常的action突然間不能正確執行, 后來發現原來是定義該action的xml還處于打開狀態的緣故(也可能是其他原因?), 可能重建config對象的時候必須獲得對該文件的獨享訪問??
PS:剛剛做了一次重新測試,以上原因排除,為什么尚未找到,反正現在好了.
2.
<action name="hello" class="helloworld.HelloWorldAction">
<result name="success" type="dispatcher">
<param name="location">/greetings.jsp</param>
</result>
</action>
這段代碼有另外一種調用方式:
http://localhost:8080/webwork_test/hello/hello!noHello.action
這樣就是調用hello這個action指定類的noHello方法了.
如果要帶參數的話,還沒找到如何配置.呵呵.
3.
明確指定調用那個方法的配置文件寫法:
<!-- action指定了調用action哪個方法-->
<action name="nohello" class="helloworld.HelloWorldAction" method="noHello">
<result name="success" type="dispatcher">
<param name="location">/greetings.jsp</param>
</result>
</action>
4.
指定全局的資源文件方法:
http://wiki.opensymphony.com/display/WW/webwork.properties
### Load custom default resource bundles
#webwork.custom.i18n.resources=testmessages,testmessages2
如果ApplicationResources的資源文件放在src/resources文件夾里面,在頁面上面寫
<ww:i18n name="'resources.ApplicationResources'">
<ww:text name="'delete'">
</ww:text>
</ww:i18n>
可以正確的找到中文字符集. 如果寫成<ww:i18n name="ApplicationResources'">,則會提示: Could not find the bundle 'ApplicationResources'.以上操作并沒有設置webwork.custom.i18n.resources屬性.如果指定webwork.custom.i18n.resources=resources.ApplicationResources而不指定i18n標簽的name是不允許的.i18n標簽的name屬性是必須的選項,并且要寫全路徑.
但是如果僅僅寫<ww:text name="'add'"/>頁面上僅僅是顯示add, 不會顯示對應的中文. 原因正在找.
(這個問題在tomcat重新啟動之后消失,在資源文件中配置了webwork.custom.i18n.resources=resources.ApplicationResources屬性之后,頁面上的<ww:text name="'add'"/>標簽生效了.注意配置屬性的時候前后左右不要寫多余的空格).
另外一個國際化的參考鏈接:
http://wiki.opensymphony.com/display/WW/Internationalization
基本上涉及到資源文件的修改都需要重新啟動服務器.
如果不想重啟的話可以參考這個鏈接:
http://forum.javaeye.com/viewtopic.php?t=6417&highlight=locale
5.
上面的試驗表示多語言的第一步是成功的,接下來的問題是中文顯示成?.以及手工控制多語言的問題.
webwork.i18n.encoding=UTF-8
測試頁面中的文字如下:
中國
<p></p>
<ww:text name="'add'"/>
在這個頁面里面沒有指定頁面的編碼方式,只是頁面本身的編碼方式在IDE中指定,當在ie中選擇UTF-8編碼時,中文"中國"顯示正常.
(原來把頁面設置成IDE里面的UFT-8,結果如果用myeclipse的jsp編輯器打開,默認時ISO編碼).
<%@ page contentType='text/html;charset=UTF-8'%>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
頁面里面添加以上兩句,把jsp的文件屬性設置成UTF-8,再用myeclipse打開該jsp文件輸入中文"中國",這個時候可以正確保存中文,瀏覽器可以正確的選擇UFT-8編碼.另外從ApplicationResources文件中選擇出來的中文顯示也正常了(該資源文件為UFT-8編碼,利用Java ResourceBuddle Editor插件編輯).
中文問題解決,沒有使用filter. 注意: 我的webwork版本為2.1.7.有些老版本的估計還是得用filter來處理.以后有空可以試一下.
6.
繼續上面的試驗, 所有條件不變,在helloworld.HelloWorldAction所在包中新建與該action名字想同的資源文件,本例中叫做HelloWorldAction_en.properties和HelloWorld_zh_CN.properties,然后在里面加兩個跟全局resource相同key的資源文件,頁面上會優先從這里來取國際化文字,也就是說即使指定了全局resource文件,如果在action執行的包內存在同名的key也會覆蓋同名全局資源文件中的key定義.
同樣,如果雖然action包中存在資源文件,但是沒有定義請求的key的國際化文字,則會到全局資源文件里面進行查找.
結論: webwork可以支持很好的全局資源文件, 并且每個action可以根據需要覆蓋某些key的定義. 在資源文件的搜索路徑中是action的資源文件優先,其次是全局資源文件
原文
http://wiki.opensymphony.com/display/WW/Internationalization
WebWork supports internationalization (in short, i18n) in two different places: the UI tags and the action/field error messages.
UI Tags
Validation Examples
Resource bundles are searched in the following order:
1.) ActionClass.properties
2.)BaseClass.properties (all the way to Object.properties)
3.) Interface.properties (every interface and sub-interface)
4.) package.properties (every of every base class, all the way to java/lang/package.properties)
7.
http://forum.javaeye.com/viewtopic.php?t=11073&start=0
http://www.opensymphony.com/webwork/wikidocs/Transparent%20web-app%20I18N.html
http://localhost:8080/webwork_test/hello/hello.action?set_locale=zh_CN
http://localhost:8080/webwork_test/hello/hello.action?set_locale=en_US
測試通過,自定義語種問題解決.
相關鏈接:
http://forum.javaeye.com/viewtopic.php?t=11073&start=0
8.
今天發現5.8.4版本的myeclipse的tag屬性面板挺好用的.good.
9.
有關webwork的javascript驗證能力參看以下帖子:
http://www.hibernate.org.cn/viewtopic.php?t=9126&postdays=0&postorder=asc&start=0
http://forum.javaeye.com/allbloglist.php?page=15
http://scud.blogdriver.com/scud/index.html