2011-09-29 39 views
5

Tôi đang gặp sự cố khi điền một danh sách thả xuống từ các giá trị của lớp Enum. mã lớp enum của tôi là:
Giá trị enum dưới dạng danh sách thả xuống

package abc.xyz.constants; 

public enum StateConstantsEnum 
{ 
      NEWYORK("NY"), 
      FLORIDA("FL"), 
      CALIFORNIA("CA"), 

    private String fullState; 

    private StateConstantsEnum(String s) 
    { 
     fullState = s; 
    } 

    public String getState() 
    { 
     return fullState; 
    } 
} 

Tôi muốn cư danh sách thả xuống với NewYork, Florida và California. Tôi tạo ra và thêm danh sách để mô hình mùa xuân theo cách này:

List<StateConstantsEnum> stateList = new ArrayList<StateConstantsEnum>(Arrays.asList(StateConstantsEnum.values())); 

model.addAttribute("stateList", stateList); 

Sau đó, tôi đang cố gắng để cư menu thả xuống trong JSP sử dụng:

<select name="${status.expression}" name="stateLst" id="stateLst"> 
    <option value=""></option> 
     <c:forEach items="${stateList}" var="option"> 
       <option value="${option}"> 
        <c:out value="${option.fullState}"></c:out> 
       </option> 
     </c:forEach> 
</select> 

Nhưng tôi nhận được một ngoại lệ "ngoại lệ đã tạo: javax.el.PropertyNotFoundException: Lớp 'abc.xyz.constants.StateConstantsEnum' không có thuộc tính 'fullState'. "

Làm cách nào để khắc phục sự cố này? Giúp nhiều đánh giá cao

Trả lời

7

fullState là riêng tư, getState() là người truy cập.

<c:out value="${option.state}"></c:out> 

Hoặc đổi tên trình khởi động thành getFullstate().

+0

Tôi nghĩ rằng '' sẽ là chính xác. – kingori

+0

Rất tiếc .. Tôi đã bỏ lỡ một phần nhỏ. Cảm ơn. Một vấn đề nữa, đây là in NY, FL, CA, không phải NEWYORK, FLORIDA và CALIFORNIA. Bất kỳ ý tưởng? – BambooBlunder

+2

Chỉ cần sử dụng '$ {option} 'sau đó. Trên thực tế, tên "fullstate" là gây hiểu nhầm. Đó là một cách khác. Nó giữ một chữ viết tắt của tiểu bang. – BalusC

0

trong JSP của bạn, bạn có thể sử dụng một như thế:

<form:select path="*"> 
    <form:options items="${stateList}" itemLabel="fullState" /> 
</form:select> 

nó sẽ trích xuất tất cả yếu tố trong liste của bạn (stateList) và nếu bạn không chỉ định một itemLabel và itemValue, nó sẽ mất enums bạn đánh giá cao tất nhiên bạn phải đặt getter của bạn thành getFullState và khai báo các thẻ springmvc trong trang của bạn

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