我的意思是在jsp页面没有录入日期如出生日期就会报错。我用hibernate+spring+struts.

解决方案 »

  1.   

    你的问题应该是个JS验证的问题
    在提交的时候做个JS判断一下即可
      

  2.   

    用struts和validator框架。
    depends="required,date"
      

  3.   

    用 validator在客户端或者服务器端都可以验证的`
      

  4.   

    可以客户端和服务器端两种验证方式。客户端的就是js脚本了,服务器端可以先接受到值,如果不是日期格式(包括空,非法字符等情况),在formbean中做判断,如果不对则打出ActionError(1.2版本推荐使用ActionMessage)即可。
      

  5.   

    这个日期不是必填的,可以让为空。但STRUTS 不能处理好空值。空值就报错/先感谢以上高手们。望高手们继续指点/
      

  6.   

    重新注册一下处理日期的Converter的实现类就OK了。org.apache.commons.beanutils.ConvertUtils.register(new org.apache.commons.beanutils.converters.SqlDateConverter(null), java.sql.Date.class);
    org.apache.commons.beanutils.ConvertUtils.register(new org.apache.commons.beanutils.converters.SqlTimestampConverter
    (null), java.sql.Date.class);
      

  7.   

    在struts中如果只是简单输出日期而不对日期进行其它运算处理的话即使值为空也应该不会出错,如果出错查询取值的时候处理一下rs.getString("thedate")==null?"":rs.getString("thedate");
      

  8.   


    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();
        }
    }
    然后在配置文件中   <plug-in className="etc.ConverterPlugIn" />
    但不知道怎么没有起作用?
    望上面的高手继续指点/
      

  9.   

    我觉得对于structs的表现层来讲,没有必要使用Date类型,直接在formbean中设置为String即可,这样也可以避免很多麻烦。
    对于String类型来讲,就很好判断了。你可以利用js脚本判断该String是否符合日期格式,当然在程序中也可以用java类进行服务器端的日期验证(如果需要的话),如果存入数据库的时候需要转换成日期格式,那你就在action中把String转换成Date型即可。structs的formbean实际上就是一个web层的DTO,一般来讲是不能直接与数据库打交道的。比如
    TestForm为formbean,实际打交道的一般是新建一个POJO  Test。
    如果TestForm中为private String nowdate,在Test中设置为private Date nowdate就可以了。然后
    Test.setNowdate(ConverttoDate(TestForm.getNowdate()));就可以了。ConverttoDate是你把字符串转成日期格式的函数。
      

  10.   

    不是日期格式问题,而是空值问题。我在formBean 用是的String 类型。但又不是必填的