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

  • 相关阅读:
    JDBC 复习4 批量执行SQL
    JDBC 复习3 存取Oracle大数据 clob blob
    Oracle复习
    Linux命令(1)grep
    JDBC 复习2 存取mysql 大数据
    JDBC 复习1 DBUtil
    php 环境搭建问题
    Windows 批处理 bat 开启 WiFi 菜单选项 设置ID PWD
    Bat 批处理启动和停止Oracle 服务
    docker 学习1 WSL docker ,Windows docker
  • 原文地址:https://www.cnblogs.com/guanghuiqq/p/2654300.html
Copyright © 2011-2022 走看看