2010-12-24 28 views
13

Tôi không chắc liệu hành vi này có bình thường hay không.
Tôi hy vọng rằng panel của tôi sẽ chỉ được hiển thị sau khi nhấp vào nút kích hoạt yêu cầu ajax.JSF 2/thủ tục: p: bảng điều khiển không được hiển thị bằng ajax?

Không sử dụng Ajax hoạt động tốt:

  1. p:panel id="myPanel" rendered="#{myBean.flag}"
  2. p:commandButton ajax="false" action="#{myBean.setFlagToTrue}"
  3. trước khi nhấp vào nút, các myPanel không được hiển thị (flag = false)
  4. cách nhấn vào nút, sẽ đặt cờ là true, và myPanel được hiển thị tốt

Sử dụng ajax thất bại:

  1. p:panel id="myPanel" rendered="#{myBean.flag}"
  2. p:commandButton ajax="true" action="#{myBean.setFlagToTrue}" update="myPanel"
  3. trước khi nhấp vào nút, các myPanel không được hiển thị (flag = false)
  4. cách nhấn vào nút, sẽ đặt cờ là true (như được hiển thị bởi tập tin đăng nhập của tôi), và myPanel không trả lại

tôi đã cố gắng bỏ qua thuộc tính trả lại, và thực sự là công việc ajax s tốt.
Tôi có thể biết điều đó bằng cách xem xét các thay đổi được phản ánh trong bảng điều khiển.

Trả lời

30

đặt bảng điều khiển của bạn với hiển thị có điều kiện trong một bảng điều khiển khác và cập nhật nó. Như thế này:

<p:outputPanel id="toUpdate"> 
    <p:panel id="myPanel" rendered="#{myBean.flag}"> 
    </p:panel> 
<p:outputPanel> 

<p:commandButton update="toUpdate"/> 

Đây là vấn đề đã biết. Không thể cập nhật phần tử nếu phần tử không tồn tại trong DOM.

+0

Rất đẹp. Làm việc như ma thuật. Cảm ơn bạn. – bertie

+1

Tại sao chúng ta phải làm điều này? – Makky

+0

nó hoạt động, điều này thật tuyệt vời !! cảm ơn bạn – Spartan

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