如何使用Apache Commons BeanUtils设置日期类型值,

Rag*_*dra 0 java servlets file-upload apache-commons-beanutils

我有一个HTML表单enctype="multipart/form-data"。我有一个dto它拥有所有类settergetters。由于我要以多部分形式提交表单,getParameter()因此无法使用我使用Apache Commons BeanUtils来处理html表单字段的方法。我的servlet如下

List<FileItem> items = (List<FileItem>) new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);
for (FileItem item : items) {
if (item.isFormField()) {
// Process regular form field (input type="text|radio|checkbox|etc", select, etc).
String fieldname = item.getFieldName();
String fieldvalue = item.getString();
System.out.println(fieldname);
System.out.println(fieldvalue);
// ... (do your job here)
//getters and setters
try {if((!fieldname.equals("dob"))&&(!fieldname.equals("doj"))){
             BeanUtils.setProperty(teacherInfo, fieldname, fieldvalue);}
} catch (IllegalAccessException e) {
    e.printStackTrace();
} catch (InvocationTargetException e) {
    e.printStackTrace();
}

} else {

        //Code for file upload
 }
Run Code Online (Sandbox Code Playgroud)

我的问题是我无法处理日期类型变量,这就是为什么我忽略在上面的代码和上面的代码中为某些html字段设置两个日期值,而值不是由Beans setProperty()方法设置的原因。谁能告诉我我哪里错了。。

Dro*_*sky 5

BeanUtils类提供了接受字符串值的属性设置器方法,并将它们自动转换为适当的属性类型。BeanUtils类依赖于ConvertUtils类中定义的转换方法来执行实际的转换,并且这些方法也可以直接使用。
对于DateConverter不支持默认的String到'Date'转换的日期,您将必须注册一个DateConverter实例,该实例配置有适合您使用的日期格式的模式,例如:

DateConverter converter = new DateConverter( null );
converter.setPattern("dd/mm/yyyy");
ConvertUtils.register(converter, Date.class);
BeanUtils.setProperty(obj, "date", "07/04/2014");
Run Code Online (Sandbox Code Playgroud)