我使用validator进行时间验证,格式为yyyy-MM-dd,datePatternStrict和mask都用过了,总是不成功,启用了validator的客户端验证,有时候是客户端能够通过,服务器端不能通过。
基本配置应该没问题,jar包,validation.xml和validator-rules.xml都是从struts1.2.8中struts-blank包里拷过来的,应该不会是版本问题,页面中的Email和所有属性的required可以验证,就是date和double型不能验证成功。
另:之前我在struts-config.xml中注册了一个时间转换插件,会不会和这个有关系?
相关代码如下:
DateConvert.java
[code]
public class DateConvert
implements Converter
{
static SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
public DateConvert()
{
}
public Object convert(Class type, Object value)
{
if (value == null)
return null;
if (((String)value).trim().length() == 0)
return null;
if (!(value instanceof String))
break MISSING_BLOCK_LABEL_50;
return df.parse((String)value);
Exception ex;
ex;
throw new ConversionException("输入的日期类型非法");
throw new ConversionException("输入的不是字符类型");
}
}
[/code]
DateConvertPlugIn.java
[code]
public class DateConvertPlugIn
implements PlugIn
{
public DateConvertPlugIn()
{
}
public void destroy()
{
ConvertUtils.deregister();
}
public void init(ActionServlet arg0, ModuleConfig arg1)
throws ServletException
{
ConvertUtils.register(new DateConvert(), java/util/Date);
}
}
[/code]
ConverterPlugIn.java
[code]
public class ConverterPlugIn
implements PlugIn
{
public ConverterPlugIn()
{
}
public void init(ActionServlet servlet, ModuleConfig config)
throws ServletException
{
ConvertUtils.register(new SqlDateConverter(null), java/sql/Date);
ConvertUtils.register(new SqlDateConverter(null), java/sql/Timestamp);
}
public void destroy()
{
ConvertUtils.deregister();
}
}
[/code]
问题一:validator的验证时间是在什么时候,和这个时间转换类有冲突吗?
问题二:validator的验证和版本有关系吗?validator-rules.xml中提供的double和date等类型都有具体验证方法实现吗?
问题三:时间从页面到java再到数据库的转换过程是怎样的?我的理解是在页面是字符串,到java的date类型,再到数据库的date或datetime类型,但具体转换过程不清楚
基本配置应该没问题,jar包,validation.xml和validator-rules.xml都是从struts1.2.8中struts-blank包里拷过来的,应该不会是版本问题,页面中的Email和所有属性的required可以验证,就是date和double型不能验证成功。
另:之前我在struts-config.xml中注册了一个时间转换插件,会不会和这个有关系?
相关代码如下:
DateConvert.java
[code]
public class DateConvert
implements Converter
{
static SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
public DateConvert()
{
}
public Object convert(Class type, Object value)
{
if (value == null)
return null;
if (((String)value).trim().length() == 0)
return null;
if (!(value instanceof String))
break MISSING_BLOCK_LABEL_50;
return df.parse((String)value);
Exception ex;
ex;
throw new ConversionException("输入的日期类型非法");
throw new ConversionException("输入的不是字符类型");
}
}
[/code]
DateConvertPlugIn.java
[code]
public class DateConvertPlugIn
implements PlugIn
{
public DateConvertPlugIn()
{
}
public void destroy()
{
ConvertUtils.deregister();
}
public void init(ActionServlet arg0, ModuleConfig arg1)
throws ServletException
{
ConvertUtils.register(new DateConvert(), java/util/Date);
}
}
[/code]
ConverterPlugIn.java
[code]
public class ConverterPlugIn
implements PlugIn
{
public ConverterPlugIn()
{
}
public void init(ActionServlet servlet, ModuleConfig config)
throws ServletException
{
ConvertUtils.register(new SqlDateConverter(null), java/sql/Date);
ConvertUtils.register(new SqlDateConverter(null), java/sql/Timestamp);
}
public void destroy()
{
ConvertUtils.deregister();
}
}
[/code]
问题一:validator的验证时间是在什么时候,和这个时间转换类有冲突吗?
问题二:validator的验证和版本有关系吗?validator-rules.xml中提供的double和date等类型都有具体验证方法实现吗?
问题三:时间从页面到java再到数据库的转换过程是怎样的?我的理解是在页面是字符串,到java的date类型,再到数据库的date或datetime类型,但具体转换过程不清楚