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

    实现了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顺序修改二者位置即可

  • 相关阅读:
    LeetCode Power of Three
    LeetCode Nim Game
    LeetCode,ugly number
    LeetCode Binary Tree Paths
    LeetCode Word Pattern
    LeetCode Bulls and Cows
    LeeCode Odd Even Linked List
    LeetCode twoSum
    549. Binary Tree Longest Consecutive Sequence II
    113. Path Sum II
  • 原文地址:https://www.cnblogs.com/dashen/p/4206480.html
Copyright © 2011-2022 走看看