今天开始开工.
在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