java
  • jsp
  • jstl
  • 2010-07-28 4254 views 8 likes 
    8

    Tôi đang sử dụng JSP cho chế độ xem và Spring MVC 3.0 cho bộ điều khiển. Trong JSP của tôi, tôi muốn hiển thị DateTime hiện hành, mà tôi có đoạn mã sau ...Biểu thức lồng nhau trong JSP/JSTL

    <c:set var="dateTimeDisplayFormat" value='<spring:message code="display.dateFormat" />'/> 
    
    <c:set var="currentDateTime" 
        value='<%= new SimpleDateFormat(${dateTimeDisplayFormat}).format(new Date()) %>' 
        scope="page" /> 
    

    Bây giờ, vấn đề là JSTL thất bại trong việc nhận dạng thẻ lồng nhau của tôi cho SimpleDateFormat instantiation. Tôi muốn truyền chuỗi định dạng (Như được lấy từ biến 'dateTimeDisplayFormat') đến hàm tạo SimpleDateFormat.

    Ai đó có thể xin lời khuyên làm thế nào để tôi viết hàm dựng lồng nhau cho SimpleDateFormat trong câu lệnh c: set ở trên?

    Cảm ơn bạn đã dự đoán!

    Trả lời

    16

    <c:set> có thể mất giá trị của nó từ nội dung thẻ, thay vì từ các thuộc tính value:

    <c:set var="dateTimeDisplayFormat"> 
        <spring:message code="display.dateFormat" /> 
    </c:set> 
    
    <c:set var="currentDateTime" scope="page"> 
        <%= new SimpleDateFormat(${dateTimeDisplayFormat}).format(new Date()) %> 
    </c:set>  
    

    Hơn thế nữa, bạn không cần <c:set> ở tất cả, vì cả hai <spring:message><fmt:formatDate> có thể lưu trữ kết quả của họ trong biến cho bạn:

    <spring:message code="display.dateFormat" var="dateTimeDisplayFormat"/> 
    <fmt:formatDate pattern="${dateTimeDisplayFormat}" var="currentDateTime" scope="page"/> 
    
    +0

    Cảm ơn bạn rất nhiều Skaffman, nhưng giải pháp đầu tiên mà bạn đề xuất, không hoạt động: (. Nó mang lại cho tôi ngoại lệ
    PWC6197: Đã xảy ra lỗi tại dòng: 27 trong tệp jsp: /WEB-INF/views/common/header.jsp PWC6199: Lỗi servlet được tạo: Lỗi cú pháp trên mã "$", AssignmentOperator được mong đợi sau mã này Cảm ơn bạn đã mở mắt cho cách tiếp cận thứ 2, nhưng với điều đó, ngày hiện tại hiển thị trên trang, với tất cả các mã còn lại của tôi là cùng một nghĩa. PaiS

    +0

    OMG! Vì vậy, câm của tôi, tôi đã không bao gồm các thư viện định dạng JSTL ở đầu trang, và do đó cách tiếp cận thứ 2 đã không làm việc. Bây giờ nó hiển thị ngày hoàn hảo, và cảm ơn bạn rất nhiều Skaffman cho cách tiếp cận gọn gàng! – PaiS

    +1

    câu trả lời đúng trong tinh thần của nó, nhưng lỗi cú pháp xuất phát từ việc trộn tập lệnh với el. Đây là mã java chữ (argh, không nên xảy ra trong một JSP), do đó, biến el có thể (nhưng không nên) được truy cập như thế này: '<% = new SimpleDateFormat (pageContext.getAttribute (" dateTimeDisplayFormat ")). format (new Date())%> ' –

    Các vấn đề liên quan