Làm cách nào để định dạng và hiển thị đối tượng Date
trong JSP, tốt nhất là sử dụng JSTL và EL nhưng bất kỳ giải pháp nào khác đều được chào đón? Tôi không thể thay đổi đối tượng đậu.Định dạng ngày và hiển thị nó bằng cách sử dụng JSTL và EL
Tôi có lớp sau đây:
import java.util.Date;
public class Person {
private Date myDate;
public Date getMyDate() {
return myDate;
}
public void setMyDate(Date myDate){
this.myDate = myDate;
}
}
Tôi cố gắng để hiển thị ngày trong đối tượng này trong một trang JSP. Khi tôi làm điều này <c:out value="${person.myDate} />
nó in này trong trang. 2013-06-08 00:00:00.0
Điều tôi muốn làm là xóa phần thời gian của ngày và định dạng thành MM-dd-yyyy
.
Tôi cố gắng này:
<c:set var="myDate" value="${person.myDate }"/>
<fmt:formatDate value="${myDate}" type="date" var="formattedDate"/>
và nó đã cho tôi những lỗi sau
Không thể chuyển đổi chuỗi '$ {mydate}' để java.util.Date lớp cho giá trị thuộc tính: java .lang.IllegalArgumentException: Property Editor không được đăng ký với PropertyEditorManager
Sau đó, tôi đã thử các cách sau:
<c:set var="myDate" value="${person.myDate }"/>
<fmt:parseDate value="${myDate }" var="parsedDate" pattern="MM-dd-yyyy"/>
<c:out value="${parsedDate }"/>
và tôi đã nhận:
Unparseable date: "$ {mydate}"
Cung cấp cho tôi "Không thể chuyển đổi chuỗi '$ {myDate}' thành lớp java .util.Date " – Susie
Đối với các khai báo JSTL sai, trang của tôi sẽ hiển thị ngày nếu tôi không cố định dạng nó. Có đủ để xác nhận rằng các khai báo jstl khớp với phiên bản servlet/jsp của tôi không? – Susie
Không, thẻ thay đổi ở giữa các phiên bản JSP. Họ sử dụng để có được một chuỗi (EL) và đánh giá nó cho chính họ. Sau đó, trong các phiên bản JSP cao hơn, thùng chứa servlet thực hiện việc đánh giá và sau đó gửi đối tượng tới thẻ nhận loại đối tượng đó chứ không phải một chuỗi để đánh giá. Nếu bạn trộn các thẻ, bạn sẽ nhận được các lỗi lạ. Nếu một thẻ hoạt động thì không có nghĩa là phần còn lại là tốt. – Bogdan