SpringMVC框架|日期处理及显示

64 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第26天,点击查看活动详情

示例:

@Controller\
public class ParamAction {\
    @RequestMapping("/param")\
    public String param(HttpServletRequest request,\
                        HttpServletResponse response,\
                        HttpSession session,\
                        Model model,\
                        ModelMap modelMap,\
                        Map map){\
        //Map ,Model,ModelMap,request都使用请求作用域进行传值,\
        //所以必须使用请求转发的方式进行跳转,否则丢失数据\
        Student stu = new Student("张三",22);\
        request.setAttribute("requestStu",stu);\
        session.setAttribute("sessionStu",stu);\
        modelMap.addAttribute("modelMapStu",stu);\
        model.addAttribute("modelStu",stu);\
        map.put("mapStu",stu);\
        return "main"; //切记请求转发跳\
       // return "redirect:/admin/main.jsp";//会丢失数据\
    }\

注意Model,Map,ModelMap都使用的是request请求作用域,意味着只能是请求转发后,页面才可以得到值。

 日期处理

1. 日期注入

日期类型不能自动注入到方法的参数中。需要单独做转换处理。使用@DateTimeFormat注解,需要在springmvc.xml文件中添加mvc:annotation-driven/标签。

(1)在方法的参数上使用@DateTimeFormat注解

@RequestMapping("/submitone")\
public String submitdateone(\
@DateTimeFormat(pattern="yyyy-MM-dd")\
        Date mydate){\
    System.*out*.println(mydate);\
    return "dateShow";\

(2)在类的成员setXXX()方法上使用@DateTimeFormat注解

@DateTimeFormat(pattern="yyyy-MM-dd")\
public void setDate(Date date) {\
this.date = date;\
}

但这种解决方案要在每个使用日期类型的地方都去添加使用@DateTimeFormat注解,比较麻烦,我们可以使用@InitBinder注解来进行类中统一日期类型的处理。

(3)@InitBinder注解解决类中日期问题

@InitBinder\
public void initBinder(WebDataBinder dataBinder) {\
    SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");\
dataBinder.registerCustomEditor(Date.class, new CustomDateEditor(sf, true));\
}

这样在类中出现的所有日期都可以进行转换了。

日期显示

(1)JSON中的日期显示

需要在类中的成员变量的getXXX方法上加注解.

@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")\
public Date getDate() {\
return date;\
}

(2)JSP页面的日期显示

需要使用国际化标签,先添加依赖

<dependency>\
<groupId>jstl</groupId>\
<artifactId>jstl</artifactId>\
<version>1.2</version>\
</dependency>

导入国际化的标签库

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

再使用标签显示日期

<div id="stulistgood">\
<**c** **:forEach** items=" **${** list **}** " var="stu">\
<p> **${** stu.name **}** ------- **${** stu.age **}** -------<**fmt** **:formatDate** value=" **${** stu.date **}** " pattern="yyyy-MM-dd"></**fmt** **:formatDate**></p>\
</**c** **:forEach**>\
</div>