zoukankan      html  css  js  c++  java
  • (转)实现这两个接口ModelDriven<T>,Preparable有什么用?

    转:http://www.cnblogs.com/guanghuiqq/archive/2012/08/24/2654300.html

    实现了ModelDriven就必须实现getModel这个方法,该方法返回的是你的ModelDrivern泛型中设定的实体类。其实是为了实现代码的重用,不要再定义一次你在数据访问层定义的属性了,直接用那个类就行了。不过有时候也不是很需要这个东西,比如只有一两个表单域的时候
    Struts2的Action在实现com.opensymphony.xwork2.Preparable接口后,就可以重写prepare()方法
    此时在Action中,prepare()方法的执行点是在:setXxx()和execute()的执行之前

    比如需求:在执行Action的方法前,接收前台隐藏域传过来的值,再根据该值执行相应逻辑
    如前台传过来ID,我们根据ID查找数据库对应的用户信息,再跳转到modify()中修改信息
    但实际的运行过程中发现,通过Debug断点调试得知prepare()方法接收到的ID值是零
    即前台隐藏域中的ID值没有传过来,事实上问题就出在默认的defaultStack拦截器栈上
    其实defaultStack无法接收prepare()需要的数据,而应借助paramsPrepareParamsStack拦截器栈
    事实上使用prepare拦截器之前,应先调用params拦截器,prepare()才能接收到表单数据
    基于这个思路,于是可以通过各种手段将params拦截器放置在prepare拦截器之前即可
    比如将defaultStack中的所有拦截器拷贝到struts.xml的我们自定义的myStack拦截器栈中
    再按照paramsPrepareParamsStack拦截器栈中的params和prepare顺序修改二者位置即可

  • 相关阅读:
    跨页传值另一种方法
    运行nodejs的blog程序遇见问题
    nodejs和mongodb实践
    mongodb数据库实践笔记
    两次分页显示内容——先少后多显示
    Java进阶4表达式中的陷阱
    Java进阶3. 内存回收机制
    Java进阶1. Synchronized 关键字
    Java复习9网路编程
    Java复习8.多线程
  • 原文地址:https://www.cnblogs.com/wangle1001986/p/3454259.html
Copyright © 2011-2022 走看看