时间格式变更之EL表达式

昨日写一个班次设定,保存后台数据库的所有时间都是整数,小数,前台页面时需要变换成正常时间格式,比如22:30在后台数据库存22.5  22:00后台是22,后台取了一串List,以Page的形式放置,然后分别set了一下格式,加到了model里,到前台展示后,页面总是报错,原因是set后数据库的值变更了,我百思不得其解 头疼了很久 困扰了1天 一直在想后台怎么解决。贴出错误代码:

后台:

@RequestMapping(value = {"list", ""})

public String list(Long orgId, String workShiftType,HttpServletRequest request, HttpServletResponse response, Modelmodel) {

Page page = workShiftService.find(new Page(request, response),orgId,workShiftType);

//将时间从小数形式转化为HH:MM格式,展示在页面

int size=page.getList().size();

for(int i=0;i<size;i++){

WorkShift workShift=page.getList().get(i);

String begin=parseStr2Time(workShift.getBeginTime());

String end=parseStr2Time(workShift.getEndTime());

workShift.setBeginTime(begin);

workShift.setEndTime(end);

}

model.addAttribute("page", page);

return "modules/schedule/workShiftList";

}

private String parseStr2Time(String time){

if(!StringUtils.isNullOrEmpty(time)){

if(time.contains(".5")){//半点

if(time.indexOf(".") == 1){//个位数

time = "0"+time.substring(0, time.indexOf("."))+":30";

}else{

time = time.substring(0, time.indexOf("."))+":30";

}

}else{//整点

if(Integer.parseInt(time) < 10){

time = "0"+time+":00";

}else{

time += ":00";

}

}

}

return time;

}

一直在想后台怎么去变,前台才能看到正确格式,想了想,忽然脑子就转换了 我为什么一直要变后台数据呢  我可以在前台变嘛

所以呢,后台直接就是:

@RequestMapping(value = {"list",""})

public String list(Long orgId,String workShiftType, HttpServletRequest request,HttpServletResponse response, Model model) {

Page page =workShiftService.find(new Page(request, response),orgId,workShiftType);

model.addAttribute("page", page);

return"modules/schedule/workShiftList";

}

只需要page传到前台,前台怎么变呢,前台用el表达式判断:

<tbody>

<c:forEach items="${page.list}" var="workShift">

<tr>

<td>${fns:getDictLabel(workShift.workShiftType, ‘schedule_admin_type‘, ‘‘)}</td>

<td>${workShift.workShiftName}</td>

<td>

<c:choose>

<c:when test="${workShift.beginTime.length() eq 1}">  0${workShift.beginTime}:00  </c:when>

<c:when test="${workShift.beginTime.length() eq 2}">  ${workShift.beginTime}:00  </c:when>

<c:when test="${workShift.beginTime.length() eq 3}">  0${workShift.beginTime.substring(0, 1)}:30  </c:when>

<c:otherwise>${workShift.beginTime.substring(0,2)}:30 </c:otherwise>

</c:choose>

</td>

<td>

<c:choose>

<c:when test="${workShift.endTime.length() eq 1}">  0${workShift.endTime}:00  </c:when>

<c:when test="${workShift.endTime.length() eq 2}">  ${workShift.endTime}:00  </c:when>

<c:when test="${workShift.endTime.length() eq 3}">  0${workShift.endTime.substring(0,1)}:30  </c:when>

<c:otherwise>${workShift.endTime.substring(0, 2)}:30 </c:otherwise>

</c:choose>

</td>

<td>${workShift.restHour eq .5 ? 0.5 : workShift.restHour}</td>

<td>${workShift.workHour  eq .5 ? 0.5 : workShift.workHour}</td>

<td>${workShift.remarks}</td>

<td>${workShift.statusDesc}</td>

<shiro:hasPermission name="schedule:workShift:edit">

<td>

<c:if test="${workShift.status eq ‘0‘}">

<a href="${ctx}/schedule/workShift/form?id=${workShift.id}&orgId=${workShift.orgId}"">修改</a>

<a href="${ctx}/schedule/workShift/delete?id=${workShift.id}&orgId=${workShift.orgId}" onClick="return confirmx(‘确定要删除该行政班次吗?‘, this.href)">删除</a> <!-- sun修改弹窗提示"确认要删除该班次定义吗?"为弹窗提示"确定要删除该行政班次吗?" -->

</c:if>

</td>

</shiro:hasPermission>

</tr>

</c:forEach>

</tbody>

反正时间存储总4种情况,个数组,个位数半点,十位数整点,十位数半点,没了 ,问题就简单很多。而且这种判断什么的whenotherwise 这类的也是自有魅力在。

前段时间专门看了一下el表达式 其实自己还是不会用,那就存着 ,不会的时候再过来看。

其实,前台还写了另外一种逻辑,那种稍微麻烦一下,就是以是否含有小数点来进行判断的。

基本代码逻辑是:

<td>

<c:choose>

<c:when test="${workShift.beginTime.contains(‘.‘)}" ><!--开始时间,小数展示 -->

<c:choose>

<c:when test="${workShift.beginTime.length() eq 3}">  0${workShift.beginTime.substring(0,1)}:30  </c:when>

<c:otherwise>${workShift.beginTime.substring(0, 2)}:30 </c:otherwise>

</c:choose>

</c:when>

<c:otherwise><!--开始时间,整小时展示 -->

<c:choose>

<c:when test="${workShift.beginTime.length() lt 2}">  0${workShift.beginTime}:00  </c:when>

<c:otherwise>${workShift.beginTime}:00 </c:otherwise>

</c:choose>

</c:otherwise>

</c:choose>

</td>

就是这样的。做什么事情一种方式不行的时候就换一种角度 只要你想 没什么不可以。我真是太懒了????

时间: 2024-10-13 12:25:21

时间格式变更之EL表达式的相关文章

HTML5中的时间类型,另外EL表达式的时间值来读取时间,并且还可以更改时间

HTML5规范里只规定date新型input输入类型,并没有规定日历弹出框的实现和样式.所以,各浏览器根据自己的设计实现日历.目前只有谷歌浏览器完全实现日历功能.相信这种局面很快就会结束,所有的浏览器最终都将会提供原生的日历组件. 如果你使用的是谷歌浏览器,那你就可以在下面的实例演示中看到这个漂亮的日期组件.用鼠标点击输入框,就能看到浏览器原生的日历框. 约会日期: 如果你当前使用的浏览器还没有实现日历组件,下面的图片你可以先睹为快. 无需任何的JavaScript,它变成了一个最基本的inpu

jsp页面中利用EL表达式实现时间格式转换

从数据库中取出的String类型的数据:2015-04-29 17:47:00.0 理想展现形式:2015-04-29 17:47 只需要两步就可以实现哦: first:引入标签库 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefi

JSP页面用EL表达式 输出date格式

1.头上引入标签 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> 2.<fmt:formatDate value="${project.creatDate }" patt

在EL表达式或者Struts标签库中格式化日期对象,即将Date转换为yyyy-MM-dd格式

一.EL表达式 首先,在jsp页面引入<fmt> tags,<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>. 其次,将EL表达式作为fmt标签属性的value值.再增加pattern参数,为日期制定需要格式化的格式,如yyyy-MM-dd.例如: <fmt:formatDate value="${object.dateproperty}&quo

———— JSP页面用EL表达式 输出date格式 ————

JSP页面用EL表达式 输出date格式 1.头上引入标签 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> 2.使用: <fmt:formatDate value="${proje

自定义EL表达式,将对象转成json格式,关键代码

做javaweb开发的最常用的一个东西el表达式,这个东西是个很好用的东西,但有些时候我们处理复杂的字符串操作,就有些相形见绌了,这个时候就需要用自定义的方法去实现更多简洁方便的事情. 下面自定义一个将对象转成json字符串的自定义el表达式用来讲解这个自定义的过程: ElFunctions.java import net.sf.json.JSONObject; public class ElFunctions{ public static String toJsonString(Object

EL表达式获取日期时间类型后格式化的问题

最近在项目中遇到的问题,就是从后台取到的java.util.Date类型的数据,在前台需要格式化的问题. 开始想了很多办法,其实在JSP页面中处理很简单,JSTL提供的format标签即可解决这个问题 1.首先引入标签库 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>   2.在需要显示日期的地方调用fmt标签即可 <fmt:formatDate value=&qu

EL表达式、 jstl标签

EL表达式(Expression Language) 目的:为了使JSP写起来更加简单.表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法,让Jsp的代码更加简化. 1.语法结构 ${expression} 2.[ ]与.运算符 EL 提供"."和"[ ]"两种运算符来存取数据. 当要存取的属性名称中包含一些特殊字符,如 . 或 - 等并非字母或数字的符号,就一定要使用"[ ]".例如

jsp的el表达式使用

EL表达式的使用 EL经常和JSTL一起使用,但是EL又可以单独使用,全称是Expression Language 在JSP中,经常会打印一些变量的内容,这些变量可以是从某个范围中变量,比如page.request.session.application范围. 例,打印str变量,下面三种方法都可以: <%out.println(str)%>,这样会使JSP页面里面包含JAVA代码: <%=str%>只能从本地获得,如果要从session里面获取必须是<%=session.g