`

[Struts1.X]处理表单中值为空的日期类型字段

阅读更多
在示范中心项目中,我们把ActionForm中日期类型的字段指定为String类型,而在对应的JavaBean中指定为java.sql.Date类型。当用户提交表单的时候,在Action里使用BeanUtils.copyProperties()方法从ActionForm构造JavaBean对象(详见利用BeanUtils在对象间复制属性)。这个方法在大部分时候都很好,但有一个问题,就是当用户没有填写日期类型字段时(而该字段并非必填),validator不会提出警告,而在copyProperties()时会报类型转换异常,原因是这时ActionForm中的该字段的值是空字符串(""),负责字符串向Date转换的SqlDateConverter类调用Date.valueOf("")方法,显然""是无法转换为日期的,所以会抛出异常。

通过查看代码和资料,我发现这个问题的解决方法其实非常简单。只要把带缺省值参数的SqlDateConverter重新注册一下,覆盖原有的注册信息就可以了,这个注册语句一般是写在系统初试化的地方,对于Struts应用程序,当然做在PlugIn里最方便。代码如下:


package etc;

import javax.servlet.ServletException;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.converters.SqlDateConverter;
import org.apache.struts.action.ActionServlet;
import org.apache.struts.action.PlugIn;
import org.apache.struts.config.ModuleConfig;

public class ConverterPlugIn implements PlugIn{

     public void init(ActionServlet servlet, ModuleConfig config) throws ServletException {
         ConvertUtils.register(new SqlDateConverter(null),java.sql.Date.class);
     }

     public void destroy() {
         ConvertUtils.deregister();
     }
}

注意SqlDateConverter的构造方法是带有参数null的,这表示遇到不能解析的字符串就返回空值。而deregister()方法的作用是恢复ConvertUtils的缺省注册表。为了使这个PlugIn起作用,要在struts-config.xml里增加一句话:

<plug-in className="etc.ConverterPlugIn" />
日期字段往往会给我们的开发带来麻烦,其实在Struts应用程序里,只要把这些转换类搞熟了,总可以找到很方便的办法。常见的问题还有如何指定日期输入格式,怎样处理java.util.Date的转换,等等,在这个链接里有解决这些问题的方法,道理都是一样的。


分享到:
评论

相关推荐

    zhongzhi.rar_快速 中值_快速中值滤波

    在图像处理领域,中值滤波是一种非常有效的噪声去除方法,尤其对于椒盐噪声和斑点噪声有很好的抑制效果。"zhongzhi.rar_快速 中值_快速中值滤波"这个压缩包可能包含了一个关于快速中值滤波算法的实现,包括代码文件...

    imagefliter.rar_彩色中值滤波

    标题中的“imagefliter.rar_彩色中值滤波”指的是一个使用了中值滤波算法来处理彩色图像的MATLAB程序。中值滤波是一种非线性滤波方法,常用于去除图像噪声,特别是椒盐噪声。这种方法的核心是用像素邻域内像素值的...

    中值滤波算法改进之C语言实现.rar_C语言中值滤波_图像中值滤波_均值滤波c语言_改进中值滤波_改进滤波

    1. **中值滤波**:中值滤波是一种非线性的信号处理技术,其基本思想是在一个窗口内选取像素值的中值作为该位置的新的像素值。中值滤波器对椒盐噪声有很好的抑制效果,因为噪声通常表现为极端值,而中值操作能有效地...

    PP.rar_bmp中值滤波

    标题中的“PP.rar_bmp中值滤波”指的是一个名为“PP.rar”的压缩包文件,其中包含关于在BMP图像上应用中值滤波的程序或代码。BMP(Bitmap)是一种常见的位图图像格式,通常用于存储未经压缩的图像数据。中值滤波是一...

    zhongzhi.zip_数据 中值滤波

    中值滤波是一种广泛应用在数字图像处理和信号处理中的非线性滤波方法,它能够有效地去除噪声,尤其是椒盐噪声。在这个名为"zhongzhi.zip"的压缩包文件中,我们关注的是中值滤波的算法实现,具体通过C语言编写的...

    253108.rar_极值中值滤波

    极值中值滤波是一种非线性的数字信号处理方法,主要应用于图像处理和信号去噪领域。这种滤波器利用了像素的局部信息,通过比较像素邻域内的极值(最大值和最小值)和中值来去除噪声,尤其是椒盐噪声和其他不连续的...

    XINNIAN.rar_加权中值滤波_图像加噪声 C_自适应_自适应滤波

    在图像处理领域,"XINNIAN.rar_加权中值滤波_图像加噪声 C_自适应_自适应滤波" 这个压缩包文件包含了一系列关键的技术和概念,这些技术广泛应用于图像分析、增强和恢复。以下是针对标题和描述中的知识点的详细解释:...

    Circle-Median-Filter.zip_快速中值滤波

    总之,"Circle-Median-Filter"提供了一种针对circle-valued数据的快速中值滤波方法,它结合了中值滤波的噪声抑制能力和特定领域的数据特性,为处理此类数据提供了有效的工具。通过对代码库的研究,我们可以进一步...

    Matlab.rar_matlab 中值滤波_中值滤波_平滑滤波_平滑滤波器_直方图均衡化 matlab

    总的来说,Matlab为图像处理提供了强大的支持,无论是进行中值滤波去噪、平滑滤波优化还是直方图均衡化增强,都能通过其内置的函数和灵活的编程接口轻松实现。通过学习和掌握这些知识,你可以在图像处理项目中取得...

    image-processing.rar_图像中值滤波_图像滤波算法

    首先,**二值化**是图像处理中的一个基础操作,它将图像转化为只有两种颜色(通常是黑和白)的图像,以此来简化图像并突出其重要的结构信息。在实际应用中,二值化常用于文字识别、图像分割和边缘检测等领域。二值化...

    zishiying.rar_彩色中值滤波_彩色图像滤波

    在matlab 下的自适应中值滤波。可以处理彩色图像

    数字图像处理均值中值滤波

    在数字图像处理领域,均值滤波和中值滤波是两种常见的降噪技术,尤其在去除图像噪声、平滑图像细节方面有着广泛的应用。北航的实验课件中,通常会深入讲解这两种滤波器的工作原理、实现方法以及它们在实际应用中的优...

    zhongzhi.zip_中值滤波_中值滤波 信号_信号 中值滤波_信号中值滤波_信号处理

    此压缩包"zhongzhi.zip"包含了一个名为"zhongzi.m"的MATLAB程序,它是专为信号处理初学者设计的,用于实现中值滤波算法。 中值滤波的基本思想是,对于图像或信号中的每一个像素点或采样点,用其周围窗口内的像素或...

    wenjian.rar_中值 均值_图像处理_彩色中值滤波_彩色图像滤波

    "wenjian.rar_中值 均值_图像处理_彩色中值滤波_彩色图像滤波"这一资源主要探讨的是两种基本的滤波器:均值滤波器和中值滤波器,尤其是它们在处理彩色图像时的表现。 1. **均值滤波**:均值滤波是最基础的线性滤波...

    中值滤波.rar_bmp中值滤波_paragraphlu9_中值滤波

    图像处理,均值值滤波,平滑图像,可以直接用,直接复制粘贴就行。

    zhongzhi.rar_中值 图像_中值滤波

    《图像处理:中值滤波及其应用》 在图像处理领域,中值滤波是一种广泛应用的非线性滤波技术,主要用于去除噪声和保持边缘细节。"zhongzhi.rar"这个压缩包文件包含了关于“中值 图像_中值滤波”的相关资源,其描述...

    daima.rar_中值滤波 十字_方形中值滤波

    1. **十字中值滤波**:在十字中值滤波中,邻域选择的是以目标像素为中心,沿水平和垂直方向延伸的线段,形成一个十字形状。这种方法特别适用于处理具有强烈纹理或方向性的图像,因为它能够更好地保留纹理方向性和...

    code.zip_matlab 中值滤波_matlab 图像处理_matlab去噪_维纳图像去噪_高斯去噪

    三种图像去噪源码(matlab实现) 1.均值滤波对高斯噪声的效果 2.二维自适应维纳滤波对高斯噪声的滤除效果 3.对加入椒盐噪声的图像分别作均值、中值和维纳滤波

    midfilter.zip_一维中值滤波_平滑数据_数据处理_数据平滑_数据平滑处理

    一维中值滤波是一种非线性的信号处理技术,常用于去除噪声,特别是在一维数据序列如时间序列分析中。这种滤波方法基于排序统计,它通过替换输入序列中的每个点(像素)值为该点邻域内的中值来工作。在MATLAB中实现一...

    数字图像处理论文 中值滤波

    数字图像处理论文 中值滤波 中值滤波概念: 中值滤波法是一种非线性滤波技术,它既可对图像中的噪声进行有效的衰减,又能使目标的边缘少受影响,而成为空域平滑的重要手段。中值滤波的具体做法是选定一个含有一定...

Global site tag (gtag.js) - Google Analytics