2013-01-05 19 views
7

Tôi gặp sự cố về giá trịChangeListener. Tôi đang sử dụng JSF 1.2 trên Weblogic 6.0.Làm cách nào để nhận các giá trị mô hình được cập nhật trong phương thức valueChangeListener?

Tôi có một trang, ở trên đầu trang có 2 nút radio có tên là Name1 và Name2. Khi Name1 được nhấp, chi tiết Name1 (có khoảng 30 trường) được hiển thị bên dưới các nút radio và khi Name2 được nhấp, chi tiết Name2 sẽ được hiển thị. Bây giờ người dùng có thể cập nhật các chi tiết được đặt tên đã nhấp. ví dụ. người dùng nhấp vào Name1 và thay đổi trường địa chỉ và sau đó nhấp vào Name2 và thay đổi tuổi của Name2. Khi người dùng nhấp vào Name1, địa chỉ sẽ được hiển thị được cập nhật với giá trị mới và một lần nữa khi người dùng nhấp vào Name2, tuổi nên được cập nhật.

Tôi đã sử dụng valueChangeListener để giải quyết nó vì tôi cần giá trị cũ và mới của sự kiện đã thay đổi. Vấn đề là, như valueChangeListener được gọi vào cuối pha VALIDATION, tôi không nhận được địa chỉ cập nhật của trường Name1 trong phương thức valueChangeListener. Ai đó có thể giúp tôi để có được bất kỳ cách giải quyết nào không?

Trả lời

14

như valueChangeListener được gọi vào cuối giai đoạn xác nhận, tôi không nhận được địa chỉ cập nhật của lĩnh vực Name1 trong phương pháp valueChangeListener

Queue sự kiện sang giai đoạn INVOKE_ACTION nên rằng nó hoạt động như một phương thức hành động (nghe).

public void valueChangeListenerMethod(ValueChangeEvent event) { 
    if (event.getPhaseId() != PhaseId.INVOKE_APPLICATION) { 
     event.setPhaseId(PhaseId.INVOKE_APPLICATION); 
     event.queue(); 
     return; 
    } 

    // Do your original job here. 
    // It will only be entered when current phase ID is INVOKE_APPLICATION. 
} 

Như INVOKE_ACTION giai đoạn chạy sau UPDATE_MODEL_VALUES, các giá trị mô hình cập nhật sẽ chỉ có sẵn "theo cách thông thường".

+1

Cảm ơn rất nhiều BalusC. Nó hoạt động. Bất cứ khi nào tôi gặp khó khăn tại một số vấn đề JSF, tôi luôn luôn tìm kiếm các đề xuất của bạn trong stackoverflow và tôi thấy câu trả lời của bạn rất đơn giản và rõ ràng để làm theo. Cảm ơn một lần nữa. – Suman

+1

Bạn được chào đón. – BalusC

+0

Không được kết nối trực tiếp với câu hỏi, nhưng một số thông tin khác nếu có ai sử dụng giải pháp này: hãy lưu ý rằng nếu bạn có bất kỳ ValueChangeListeners nào khác được đăng ký cho trường này, chúng sẽ được kích hoạt hai lần. Tôi đoán đó là một kịch bản cụ thể yên tĩnh, nhưng dù sao cũng tốt. – whitesite

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