2009-10-26 3 views
6

Tôi đang cố gắng để có được một hành động trong Struts 2 để làm việc với một Enum như một tham số đầu vào. Những gì tôi đã thực hiện cho đến nay trông giống như:Làm cách nào để sử dụng tham số enum trong struts 2?

public TestAction { 
    public enum Module { 
    VALUE1; 
    } 

    private Module module; 

    public void setModule(Module module) { 
    this.module = module; 
    } 
    public Module getModule() { 
    return module; 
    } 
} 

Nhưng khi cố gắng sử dụng, tôi nhận được lỗi chuyển đổi xwork và bản thân hành động thậm chí không thực thi. Tôi có thể làm cho công việc này như là, hoặc tôi nên cung cấp setModule (String) bản thân mình?

Chỉnh sửa: Tôi đang sử dụng struts 2.1.6 URL Tôi đang cố gắng: /test.action?module=value1

Trả lời

5

Cần ràng buộc một chuỗi để một enum ngay lập tức. Tôi nghĩ rằng trình chuyển đổi loại enum đã ở trong cấu hình mặc định kể từ khi tôi nghĩ 2.1.x.

  • Bạn đang sử dụng phiên bản struts 2 nào?

nếu bạn không chắc chắn sau đây là trong xwork-conversion.properties của tôi trong một ứng dụng 2.0.14

java.lang.Enum = com.opensymphony.xwork2.util.EnumTypeConverter 

EDIT: Đáp lại những nhận xét, nếu bạn cần phải bỏ qua trường hợp gán một enum bạn có những lựa chọn sau:

  • Thay đổi giá trị của enum để actaully thấp trường hợp - phong cách không lớn và có thể làm cho mã của bạn trông hơi lạ
  • .210
  • Viết chuyển đổi trường hợp không nhạy cảm kiểu mới cho java.lang.Enum (chỉ cần sao chép xwork một và toUpper đầu vào tôi đoán)
  • thêm một setModule mới (String) đối với trường hợp cụ thể này
+0

Xin lỗi tôi quên đề cập đến tôi đang sử dụng thanh chống 2.1.6. Tôi đọc nó được cho là để làm việc ra khỏi hộp trong khi googling nhưng nó không làm việc cho tôi theo cách tôi sử dụng nó trong ví dụ trên. Một vấn đề đánh chặn có thể? – wds

+0

Chuỗi truy vấn trông như thế nào .. /myAction.action?module=VALUE1 * nên * chỉ cần làm việc, ràng buộc các công cụ từ yêu cầu đến hành động là các thông số đánh chặn, mà nếu bạn nhận được một lỗi cuộc hội thoại thì nó phải là được cấu hình –

+0

Được rồi, nó không xảy ra với tôi bằng cách nào đó để kiểm tra với VALUE1 thay vì giá trị 1. Nó thực sự hoạt động theo cách đó. Tôi đoán EnumTypeConverter sử dụng Enum.valueOf, nhưng tôi thực sự muốn có nó bỏ qua trường hợp. – wds

0

Tôi chỉ gặp phải vấn đề tương tự khi chuyển tiếp từ hành động sang hành động chuyển hướng (thay vì hành động chuyển tiếp), Struts sẽ không nhận dạng đúng cách tôi đang sử dụng tham số List<Enum> và tôi phải sử dụng phương thức proxy để chuyển đổi từ tham số Chuỗi thành List<Enum>.