2008-10-02 38 views
14

Có cách nào để sử dụng các giá trị Enum bên trong một JSP mà không sử dụng tập lệnh không.Enum bên trong một JSP

ví dụ:

package com.example; 

public enum Direction { 
    ASC, 
    DESC 
} 

như vậy trong JSP tôi muốn làm một cái gì đó như thế này

<c:if test="${foo.direction ==<% com.example.Direction.ASC %>}">... 

Trả lời

17

Bạn có thể thực hiện các văn bản web thân thiện cho một hướng đi trong enum như một lĩnh vực:

 

<%@ page import="com.example.Direction" %> 
... 
<p>Direction is <%=foo.direction.getFriendlyName()%></p> 
<% if (foo.direction == Direction.ASC) { %> 
<p>That means you're going to heaven!</p> 
<% } %> 
 

nhưng điều đó kết hợp chế độ xem và mô hình, mặc dù để sử dụng đơn giản, nó có thể độc lập với chế độ xem ("Tăng dần", "Giảm dần", v.v ...).

Trừ khi bạn không thích đặt thẳng Java vào các trang JSP của mình, ngay cả khi được sử dụng cho những thứ cơ bản như so sánh.

1

Bạn chỉ có thể kiểm tra đối với các giá trị enum như là một chuỗi:

<c:if test="${foo.direction == 'ASC'}">... 
+3

Sử dụng chuỗi được mã hóa cứng là ý tưởng tồi – sjain

+0

Tránh các chuỗi được mã cứng. Nếu enum của bạn bị thay đổi thì sao? – user2447161

+0

Có lẽ đây không phải là giải pháp tốt nhất. Nhưng nó vẫn còn tốt hơn so với mã Java cồng kềnh trong trang JSP. – saidfagan

-1

Nó có thể được thực hiện như thế này tôi đoán

<c:set var="ASC" value="<%=Direction.ASC%>"/> 
<c:if test="${foo.direction == ASC}"></c:if> 

lợi thế là khi chúng ta cấu trúc lại nó sẽ đổi tên ở đây quá

+0

Tại sao bạn lại bỏ nó? Xin vui lòng nhận xét lý do. –

+0

Nếu biểu thức JSP của nó nhìn vào câu trả lời được chấp nhận, anh ta cũng đang sử dụng nó –

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