2012-01-10 3 views
1

formatDate가 올바르게 작동하지 않는 이유를 알아 내려고하는 데 문제가 있습니다.FormatDate를 사용할 때 ClassCastException이 발생했습니다.

자바

@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> 

여기에있다 컨트롤러의 수정 된 버전, 날짜를 다루는 모든 부품이 여기에 표시됩니다. 그렇지 않으면 모든 EL 잘 평가, formateDate 코드가있을 때

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

는 *** 오류 만 보여줍니다 내 응용 프로그램을 실행하는 경우

@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; 
} 

나는이 오류가 발생합니다.

왜 이런 일이 벌어지고 있는지 알 수 있습니다.

+0

다른 모든 EL은 올바르게 평가됩니까? –

+0

try uri = http://java.sun.com/jsp/jstl/fmt_rt – RanRag

+0

@Dave 모든 것이 올바르게 평가되고있는 것처럼 보입니다. 페이지가이 오류를 throw하는 유일한 시간은 형식 코드가있는 경우입니다. – user1141946

답변

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

종속성을 변경할 수 없어서 내 솔루션은 스크립틀릿을 사용했습니다. 나는 fmt : formatDate를 풀지는 않지만 workarround로 사용할 수 있습니다 :

<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> 
관련 문제