首页 > 代码库 > 保存ActionForm中未编辑的字段为NULL,尤其整数不赋0值
保存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>
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。