常见问题汇总(十一)——关于SpringMVC

1、日期格式的存取

        按照一定格式获取页面日期数据存入数据库

        1、如果查询类使我们自己写,那么在属性前面加上@DateTimeFormat(pattern = "yyyy-MM-dd")  ,即可将String转换为Date类型,如

@DateTimeFormat(pattern = "yyyy-MM-dd") 
private Date createTime;

        2、如果我们只负责web层的开发,就需要在controller中加入数据绑定:

@InitBinder
public void initBinder(WebDataBinder binder) { 
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); 
dateFormat.setLenient(false); 
binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true)); //true:允许输入空值,false:不能为空值  

        3、可以在系统中加入一个全局类型转换器

实现转换器

public class DateConverter implements Converter { 
@Override
public Date convert(String source) { 
 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); 
 dateFormat.setLenient(false); 
 try { 
  return dateFormat.parse(source); 
 } catch (ParseException e) { 
  e.printStackTrace(); 
 }   
 return null; }

进行配置:

 
   
    
     
    
   


    4、如果将日期类型转换为String在页面上显示,需要配合一些前端的技巧进行处理。

    JSP模版引擎方法:

<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>   
 

    Freemarker模版引擎方法:

  

    5、SpringMVC使用@ResponseBody返回json时,日期格式默认显示为时间戳。

@Component("customObjectMapper") 
public class CustomObjectMapper extends ObjectMapper { 
  
 public CustomObjectMapper() { 
  CustomSerializerFactory factory = new CustomSerializerFactory(); 
  factory.addGenericMapping(Date.class, new JsonSerializer() { 
   @Override
   public void serialize(Date value, JsonGenerator jsonGenerator, 
     SerializerProvider provider) throws IOException, JsonProcessingException { 
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
    jsonGenerator.writeString(sdf.format(value)); 
   } 
  }); 
  this.setSerializerFactory(factory); 
 } 
}

配置如下:

 
  
   
    
   
  

    6、date类型转换为json字符串时,返回的是long time值,如果需要返回指定的日期的类型的get方法上写上@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") ,即可将json返回的对象为指定的类型。

@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
public Date getCreateTime() {
return this.createTime;
}

2、 at org.springframework.asm.ClassReader.(Unknown Source)

    asm与jdk版本不兼容导致

3、Cannot generate variable name for non-typed Collection parameter type

 常见问题汇总(十一)——关于SpringMVC_第1张图片

 

 

 

你可能感兴趣的:(常见开发问题)