Domanda

Ho problemi cercando di capire il motivo per cui il mio FormatoData non funziona correttamente. Ecco il mio codice:

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 - porzione di codice che utilizza il fmt: Codice FormatoData:

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

Ecco una versione modificata del controller, tutte le parti che si occupano con la data sono mostrati qui.

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

Quando si esegue la mia applicazione ottengo questo errore:

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

*** errore mostra solo quando il codice formateDate è in là, altrimenti tutto EL valutare bene.

Chiunque sa perché questo può accadere?

È stato utile?

Soluzione

Trovato la soluzione sul motivo per cui il mio tag fmt non funzionava. Avevo bisogno di cambiare la mia dipendenza da:

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

A:

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

Grazie per i suggerimenti!

Altri suggerimenti

Non ho potuto cambiare le dipendenze, quindi la mia soluzione era quella di usare uno scriptlet. Io non risolve il fmt: FormatoData, ma può essere utilizzato come 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>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top