WebWork Action功能介绍
创始人
2024-04-16 20:21:00
0

最近在学习《webwork in action》虽然能在网络上下载到电子版,但是在书店看到了中文版纸制图书,还是忍不住买了一本。随便浏览了下,还是要比电子版本介绍的详细的多,很多细节介绍,对实际的开发有很大的帮助。边看书,边写程序,边简单记录下笔记,方便以后查看。

本人使用的webwork 2.2.4 比图书介绍的例子所使用的版本高,怕因为版本的原因会有不同的地方,因此,看一点,写程序试试,这样能加深了自己的印象。

前面的笔记中,有介绍webwork 的基本配置,这里就不多说了。此次主要介绍ActionSupport这个类的一些常用功能。我们常说的action类,其实就是实现execute()方法的类,此方法返回一个 result code,控制器就是根据于此来实现控制的。90%的action类现在都是继承于ActionSupport 类,他帮助我们默认实现了很多功能。比如:action数据校验,本地化信息等等。

Webwork Action实现了一套自己的视图标签,有很多的功能,能帮助我们轻松实现表单数据的校验,个人感觉如果使用标签的话,视图中的入侵性太大,另外就是不利于团队分工。既然webwork支持freemark这样的模版,为什么不用呢?还是比较不错的东西。

ActionSupport基类实现Validateable接口,里面就一个方法 public void validate();方法。如果你想实现后台数据验证,又没有使用ww标签,这个方法是个不错的选择。

我们看下没有使用这个方法的execute()我们如何写:给出关键代码

  1. private String message;  
  2. private String name;  
  3. public String execute(){  
  4. if(name==null||"".endsWith(name)||  
  5. "World".endsWith(name)){  
  6. logger.info( “名称错误!”);  
  7. return INPUT;  
  8. }  
  9. message="Hello,"+name+" !\n";  
  10. return SUCCESS;  
  11. }  

我们手工实现name字段的校验,这样也许没甚么不好,一样实现功能呀!

我们再看看重构后的代码:

  1. private String message;  
  2. private String name;  
  3. public String execute(){  
  4. message="Hello,"+name+" !\n";  
  5. return SUCCESS;  
  6. }  
  7. public void validate(){  
  8. if(name==null||"".endsWith(name)||  
  9. "World".endsWith(name)){  
  10. addFieldError("name", "myMessage");  
  11. logger.info( getText("myMessage"));  
  12. }  
  13. }  

代码并没有减少,只不过移了下位置,把数据验证部分放到validate()方法中了。

在Webwork Action中,先执行validate()这个方法,如果校验成功就继续执行Webwork Action的其他部分,否则,返回 INPUT .

如果你关注ww 标签,这里就介绍下 addFieldError("name", "错误信息提示!");方法。此方法会向你使用的标签添加提示信息。轻松实现表单验证的用户提示。此方法必须和ww标签一起使用效果才明显,本人不怎么喜欢ww标签,就不详细介绍了。

另外一个常用的功能,本地信息的支持。ActionSupport中的 getLocale()会从浏览器的request header中获得locale的值,从而调用语言配置文件。要想实现本地信息化显示,就必须配置 *.properties 文件。还是上面的例子:

  1. public void validate(){  
  2. if(name==null||"".endsWith(name)||  
  3. "World".endsWith(name)){  
  4. addFieldError("name", "myMessage");  
  5. logger.info("myMessage");  

我们设置了提示信息,如果要实现本地信息化,还要建立一个 className.properties的文件,此文件和类在同目录下,内容如下:

myMessage=This is my message;

代码增加一个getText()方法。

  1. public void validate(){  
  2. if(name==null||"".endsWith(name)||  
  3. "World".endsWith(name)){  
  4. addFieldError("name", getText("myMessage"));  
  5. logger.info( getText("myMessage"));  
  6. }  

如果你需要其他语言。只需要配置 className_*.properties 文件。这让我想起来了软件的汉化翻译工作,常完游戏的朋友应该很熟悉。Webwork的翻译工作是不是做的很周到呢。。。

 Jsp中还有常用几个常用对象,比如:Session, Applaction等。我们常常就是根据Session来判断用户是否登陆过。

Webwork中,通过ActionContext来访问。

  1. Map session=ActionContext.getContext().getSession();  
  2. session.put(“userName”,user); 

当然,get()方法就能把session取出来。

我们常用的数据基本就是这些,通过Webwork Action和模型中的对象,基本能实现对信息的填充,特别是视图层。

Webwork实现的文件上传功能,真是太简单了。基于拦截器的实现方式,能让我们轻松实现文件的上传。

【编辑推荐】

  1. WebWork框架原理与应用(1)
  2. WebWork安装和配置浅析
  3. WebWork文件上传实现浅析
  4. WebWork中返回INPUT的原因
  5. WebWork如何实现文件上传配置过程

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...