• 保存ActionForm中未编辑的字段为NULL,尤其整数不赋0值


    Struts中,如果ActionForm里某些字段没有编辑(即没有输入值),提交后直接保存到数据库时,这些字段保存为""(String)或0(int),可是在实际开发中,可能需要将其保存位null,如何实现呢? 

    最直观的办法:判断字段是否为空,如果为空,则返回null 

    最简单的办法:修改ActionServlet配置下init-param,具体如下 

    ActionServlet配置下init-param: 

    1 <init-param>
    2 <param-name>convertNull</param-name>
    3 <param-value>true</param-value>
    4 </init-param>  


    最近又看到一个办法:用自己的ActionServlet类覆盖原有的ActionServlet,在自己的ActionServlet类中,重载 init()方法,为struts解析重新注册一些改造过的表单元素数据解析方法,设定各种类型的默认值为null,代码如下: 

     1 /**
     2  * 用户自己的 ActionServlet 实现类,覆盖 struts 的 ActionServlet
     3  * <p>Title: </p>
     4  * <p>Description: 2006-01-13</p>
     5  * <p>Copyright: Copyright (c) 2006</p>
     6  * <p>Company: eqzhou</p>
     7  * @author eqzhou
     8  * @version 1.0
     9  */
    10 public class MyActionServlet extends ActionServlet {
    11 
    12   /**
    13    * 重载init()方法
    14    * 为struts解析重新注册一些改造过的表单元素数据解析方法
    15    */
    16   public void init() throws ServletException {
    17       super.init();
    18 //      ConvertUtils.register(new BigDecimalConverter(null), BigDecimal.class);
    19 //      ConvertUtils.register(new BigIntegerConverter(null), BigInteger.class);
    20 //      ConvertUtils.register(new FloatConverter(null), Float.class);
    21 //      ConvertUtils.register(new IntegerConverter(null), Integer.class);
    22 //      ConvertUtils.register(new LongConverter(null), Long.class);
    23 //      ConvertUtils.register(new ShortConverter(null), Short.class);
    24 //      ConvertUtils.register(new SqlTimeConverter(null), Time.class);
    25 //      ConvertUtils.register(new SqlTimestampConverter(null), Timestamp.class);
    26 
    27       /*
    28        * Struts的 actionForm 的属性的类型如果为 java.sql.Date 的时候,则不可以为 null,
    29        * 以下方法,使其可以为 null .
    30        */
    31       ConvertUtils.register(new SqlDateConverter(null), Date.class);
    32 
    33   }
    34 
    35 }

     然后在web.xml中,配置 MyActionServlet  

     1 <servlet>
     2     <servlet-name>action</servlet-name>
     3     <servlet-class>这里可以是你的包的路径.MyActionServlet </servlet-class>
     4     <init-param>
     5       <param-name>config</param-name>
     6       <param-value>/WEB-INF/struts-config.xml</param-value>
     7     </init-param>
     8     <init-param>
     9       <param-name>debug</param-name>
    10       <param-value>2</param-value>
    11     </init-param>
    12     <load-on-startup>2</load-on-startup>
    13   </servlet> 
    你们人类自己的罪过,没事牵拖到我身上来做啥?
  • 相关阅读:
    Vue.js——60分钟组件快速入门(下篇)
    Vue.js Failed to resolve filter: key
    Component template should contain exactly one root element. If you are using v-if on multiple elements, use v-else-if to chain them instead.
    Visual Studio 插件开发资源
    VisualStudio Shell简介 — 集成插件
    VisualStudio Shell简介 — 界面定制
    VisualStudio Shell简介
    Python学习笔记——模块
    Python学习笔记——对象
    Python学习笔记——函数
  • 原文地址:https://www.cnblogs.com/masw/p/3905013.html
Copyright © 2020-2023  润新知