转换器(Converter)——.x项目经验中,有个问题不时的出现——在创建FormBean时,对于某个属性到底应该用String还是其它类型?开发Web应用程序与开发传统桌面应用程序不同,Web应用程序实际上是分布个不同的主机(当然也可以同一个主机,不过比较少见)上的两个进程之间互交。这种互交建立在HTTP之上,它们互相传递是都是字符串。换句话说,服务器可以的接收到的来自用户的数据只能是字符串或字符数组,而在服务器上的对象中,这些数据往往有多种不同的类型,如日期(Date),整数(int),浮点数(float)或自定义类型(UDT)等,如图1所示。因此,我们需要服务器端将字符串转换为适合的类型。图1 UI与服务器对象关系同样的问题也发生在使用UI展示服务器数据的情况。HTML的Form控件不同于桌面应用程序可以表示对象,其值只能为字符串类型,所以我们需要通过某种方式将特定对象转换成字符串。要实现上述转换,——Converter。有了它,你不用一遍又一遍的重复编写诸如此类代码:Datebirthday=().parse(strDate);<inputtype="text"value="<%=().format(birthday)%>"/>好了,现在让我们来看一个例子。转换器——HelloWorld在我的上一篇文章《(i18n)您的应用程序》的最后我举了一个可以让用户方便地切换语言的例子,下面例子与其相似,但实现方法不同。首先,如《(i18n)您的应用程序》的第一个例子一样,创建和配置默认的资源文件;接着,,代码如下:packagetutorial;;.;.;lassHelloWorldextendsActionSupport{ privateStringmsg; privateLocaleloc=; publicStringgetMsg(){ returnmsg; } publicLocalegetLoc(){ returnloc; } publicvoidsetLoc(Localeloc){ =loc; } ***@Override publicStringexecute(){ //,<s:text>标志就是通过调用它实现国际化的 msg=("HelloWorld",loc); ESS; }}然后,:<packagename="ConverterDemo"extends="struts-default"> <actionname="HelloWorld"class=""> <result>/</result> </action></package>再在Web文件夹下,,代码如下:<%***@page contentType="text/html;charset=UTF-8"%><%***@taglibprefix="s"uri="/struts-tags"%><html><head> <title>HelloWorld</title></head><body> <s:formaction="HelloWorld"theme="simple"> Locale:<s:textfieldname="loc"/> <s:submit/> </s:form> <h2><s:propertyvalue="msg"/></h2></body></html>接下来,,代码如下:packagetutorial;import
05转换器(Converter)——Struts 2.0中的魔术师 来自淘豆网www.taodocs.com转载请标明出处.