随笔 - 10  文章 - 0  评论 - 0  阅读 - 10151

保存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> 
复制代码

 

posted on   灭世者撒旦  阅读(321)  评论(0编辑  收藏  举报
编辑推荐:
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
阅读排行:
· 如何给本地部署的DeepSeek投喂数据,让他更懂你
· 超详细,DeepSeek 接入PyCharm实现AI编程!(支持本地部署DeepSeek及官方Dee
· 用 DeepSeek 给对象做个网站,她一定感动坏了
· .NET 8.0 + Linux 香橙派,实现高效的 IoT 数据采集与控制解决方案
· .NET中 泛型 + 依赖注入 的实现与应用
< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

点击右上角即可分享
微信分享提示