2010-08-11 3 views
16

모델에 Joda-DateTime 필드가 있으며이를 JSP보기에서 서식을 지정하여 표시하려고합니다.Spring MVC 3.0에서 포맷 된 DateTime을 디스플레이하는 방법은 무엇입니까?

public class Customer { 
    private DateTime dateOfBirth; 

    @DateTimeFormat(style="M-") 
    public DateTime getDateOfBirth() { 
     return dateOfBirth; 
    } 
} 

지금 내 JSP의 생년월일 (DateOfBirth)를 표시하려면 : 나는 새로운 @DateTimeFormat의 주석을 주석 한

Date of birth: ${customer.dateOfBirth} 

을하지만 결과는 포맷되지 :

Date of birth: 2010-08-11T11:23:30.148+02:00 

후 내가 봄에 사용해야하는 몇 가지 연구 결과는 다음과 같습니다. bind-tag :

<spring:bind path="customer.dateOfBirth"> 
    Date of birth: ${status.value} 
</spring:bind> 

이 기능이 작동합니다. 하지만이 간단한 작업에는 너무 복잡해 보입니다. 목록에이 방법을 사용하는 것은 list-index를 바인딩 경로에 통합해야하기 때문에 훨씬 더 복잡합니다.

제 질문은 봄 서식 지정 - 주석을 사용하여 서식이 지정된 값을 표시하는 간단한 방법이 있습니까?

답변

19

사용 @DateTimeFormat 규칙을 이해하는 spring:eval 태그 :

<spring:eval expression="customer.dateOfBirth" /> 

양자 택일로, 당신은 당신의 모델이 모든 모임에서 @DateTimeFormat 규칙을 제거하고 Naikus는 설명으로 Joda의 formatDate 태그를 사용할 수 있습니다.

향후 릴리스에서 Spring은 JSP 페이지의 기본 통합 EL 구현으로 spring : eval에 의해 호출되는 "Spring Expression Language"인 "SpEL"에서 플러그인을 지원할 계획입니다. 이렇게하면 ${customer.dateOfBirth}과 같은 인라인 표현식이 SpEL을 통해 라우트 될 수 있습니다. 이 향상된 기능 요청에 대해 https://jira.spring.io/browse/SPR-7459에 투표하십시오.

+0

봄 : 평가판이 훌륭합니다. 게다가 나는 JSP로 SpEL을 통합하기위한 향상 요청을 upvoted했다. 고맙습니다. –

+0

버전 3.0.3에서 spring : eval이라는 작은 문제점을 발견했습니다. 표현식이 널 (NULL)로 평가되면 'null'문자열이 인쇄됩니다. 반대로, spring : bind 질문의 예제는 표현식이 null로 평가 될 때 빈 문자열을 출력합니다. 'null'의 출력을 억제하는 방법이 있습니까? 감사. –

+0

이 문제를보고하려면 http://jira.springframework.org에서 JIRA를 열 수 있습니까? – kdonald

19

Date 객체가 아니고 joda datetime 객체이기 때문에 사용자 자신의 포맷 함수 나 사용자 정의 태그를 작성해야합니다.

어떻게 든 java.util.Date로 변환 할 수 있다면 jstl의 fmt 태그 라이브러리를 사용할 수 있습니다.

<fmt:formatDate value="${customer.dateOfBirth}" type="both" 
     pattern="MM-dd-yyyy" /> 

그러나 최근 빠르게 JSP 당신이 custom tags를 만들 수 있습니다.

+0

fmt 링크가 깨져있는 것 같습니다. –

+0

@noobMama jsp 페이지에서 taglib를 정의해야합니다. <% @ taglib prefix = "fmt"uri = "http://java.sun.com/jsp/jstl/fmt"%> –

관련 문제