2012-01-10 29 views
1

我无法弄清楚为什么我的formatDate工作不正常。这里是我的代码:使用formatDate时的ClassCastException

的Java

@DateTimeFormat(style = "SS") 
@Column(name="my_date") 
private Date myDate; 

public Date getMyDate() { 
    return this.myDate; 
} 
public void setMyDate(Date myDate) { 
    this.myDate = myDate; 
} 

JSP - 一个使用FMT的代码部分:formatDate代码:

<%@ page contentType="text/html;charset=UTF-8" language="java" %> 
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> 

<c:forEach var="foo" items="${fooList}" varStatus="i"> 
         <tr> 
          <td>${i.index+1}</td>       
          <td>${foo.id}</td> 
          <td>${foo.name}</td> 
          <td><fmt:formatDate value="${foo.myDate}" pattern="MM/dd/yyyy"/></td> 
         </tr> 

的web.xml

<jsp-config> 
    <jsp-property-group> 
     <url-pattern>*.jsp</url-pattern> 
     <page-encoding>UTF-8</page-encoding> 
    </jsp-property-group> 
</jsp-config> 

这里是控制器的修改版本,处理日期的所有部件均显示在此处。

@RequestMapping(value = "/{id}", method = RequestMethod.GET)  
public String list(@PathVariable("id") String id, Model uiModel) {  
    List<foo> fooList = createList(fooList); 

    uiModel.addAttribute("fooList", fooList); 

    return VIEW_OBJECT; 
} 

当运行我的应用程序我得到这个错误:

java.lang.ClassCastException: org.springframework.web.servlet.support.JstlUtils$SpringLocalizationContext incompatible with java.lang.String 

***错误,只有当formateDate代码是在有显示,否则所有的EL评估罚款。

任何人都知道为什么会发生这种情况?

+0

所有其他EL是否正确评估? – 2012-01-10 23:53:08

+0

尝试uri = http://java.sun.com/jsp/jstl/fmt_rt – RanRag 2012-01-10 23:54:30

+0

@Dave一切似乎都正确评估。页面引发此错误的唯一时间是格式代码在那里。 – user1141946 2012-01-11 14:19:51

回答

0

找到解决方案,为什么我的fmt标签不起作用。我需要改变从我的依赖性:

<dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>jstl</artifactId> 
    <version>1.1.2</version> 
</dependency> 

要:

<dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>jstl</artifactId> 
    <version>1.1.2</version> 
    <scope>provided</scope> 
</dependency> 

感谢您的建议!

0

我无法更改依赖项,所以我的解决方案是使用scriptlet。我没有解决fmt:formatDate,但它可以用作工作周:

<c:forEach var="foo" items="${fooList}" varStatus="i"> 
<tr> 
<td>${i.index+1}</td> 
<td>${foo.id}</td> 
<td>${foo.name}</td> 

<%--Scriptlet alternative: %> 
<c:set var="fooMyDate" value="${foo.myDate}" scope="request"/> 
<% 
    Object myDate = request.getAttribute("fooMyDate"); 
    java.text.DateFormat df = new java.text.SimpleDateFormat("MM/dd/yyyy"); 
%> 
<td><%= df.format(myDate)%></td> 

</tr> 
相关问题