`
seadragonnj
  • 浏览: 57154 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

webwork in action笔记(第四章)

阅读更多

 

1,webWork中使用的一种通用模式:一个可选的接口,一个适用于这个接口的interception

关于validationAware:

只有把DefaultWorkFlowInterception应用于你的action时,validation自动错误验证的威力才能显现出来,在这里DefaultWorkFlowInterception做的工作是:

(1)如果action实现了Validation接口,则调用action的validation()方法;

(2)如果校验action出错,返回INPUT,否则执行action

关于Local

1.用于显示action信息文本的property文件被放到同名的action类所在包中,

例:

*.property文件中有

  1. user.exists=the user already exists   

使用:

  1. public void validate(){   
  2.     .....   
  3.    addFieldError("user.username",getText("user.exists"));   
  4.    ........       
  5. }  

 

使用ModelDriven action

要使用这个必须做以下几步

(1)你的action实现ModelDriven这个接口

(2)用getModel()方法取代getUser()

(3)在jsp中不用通过use.*来访问域对象的值,直接用属性就可以访问

用种方法的时候应该注意一点,不应该在请求过程中改变getModel()返回的值,也就是说在execute()方法中不应该再把指向getModel()返回对象的引用,指向别的对象

通过ActionContext返回数据

通过调用ActionContext.getContext()可以返回一个ActionContext的实例对象,这个对象是ThreadLocal的,然后可以用这个实例去调用它的一些方法,如:getSession()之类的,书上用这种方法来访问session不好,应该用别一种方法(如下)

如果要用到session的话,让你的action实现SessionAware这个接口,例:

  1. public class Login extends ActionSupport implements com.opensymphony.webwork.interceptor.SessionAware,UserDAOAare{   
  2.     Map session;   
  3.     User user;   
  4.     public void setSession(Map session)   
  5.    {   
  6.         this.session=session;   
  7.    }   
  8.   publin String execute() throws Exception {   
  9.        session.*   
  10.   }   
  11.   
  12. }  

 

访问request和response

也是有两种方法:

(1)

  1. HttpServletRequest req=ServletActionContext.getRequest();  
(2)实现ServletRequestAware接口
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics