2009-07-10 28 views
6

Hy vọng ai đó có thể giúp tôi với một trở ngại nhỏ mà tôi đã đề cập đến liên quan đến việc kết xuất lại các thành phần RichFaces sau khi liên kết/nút a4j đã thực hiện hành động của nó . Một phiên bản đơn giản của vấn đề của tôi là như sau:Cách tái kết xuất thành phần RichFaces sau khi liên kết a4j được gọi

tôi có 2 thành phần đầu ra hiển thị một giá trị văn bản được trả dựa trên một số giá trị trong lớp học quản lý của tôi:

<h:outputText id="on" value="ON" rendered="#{manager.isOn}" /> 

<h:outputText id="off" value="OFF" rendered="#{not manager.isOn}" /> 

Tôi cũng có liên kết 2 a4j mà gọi một số hành động và sau đó lại làm cho các thành phần outputText trên:

<a4j:commandLink ajaxSingle="true" value="Set On" action="#{manager.setOn(true)}" reRender="on,off" /> 

<a4j:commandLink ajaxSingle="true" value="Set Off" action="#{manager.setOn(false)}" reRender="on,off" /> 

những gì tôi mong đợi xảy ra là, khi tôi nhấp vào 'Set On' nút, phần outputText các 'ON' sẽ thôi ẩn, và 'OFF thành phần outputText sẽ hiển thị. Tuy nhiên, điều này không xảy ra.

Có ai có câu trả lời là tại sao điều này là như vậy hay không và cách tôi định lại các thành phần này sau khi hành động thành phần a4j đã hoàn thành?

Trả lời

11

outputText thành phần trong một s:div và tái và việc này là như sau:

<s:div id="myDiv"> 
    <h:outputText id="on" value="ON" rendered="#{manager.isOn}" /> 

    <h:outputText id="off" value="OFF" rendered="#{not manager.isOn}" /> 
</s:div> 

<a4j:commandLink ajaxSingle="true" value="Set On" 
    action="#{manager.setOn(true)}" reRender="myDiv" /> 

<a4j:commandLink ajaxSingle="true" value="Set Off" 
    action="#{manager.setOn(false)}" reRender="myDiv" /> 
0

Tôi giả sử rằng bạn h: outputText yếu tố trêntắt không rendered tại thời gian tải của trang.

RichFaces sẽ không lập lại các thành phần này sau ngay cả khi giá trị được hiển thị được đổi thành đúng.

1

Bạn đăng ký lại phụ huynh. Nó không phải là một thẻ Seam.

3

Tôi đồng ý với Gene nhưng cách tốt nhất tôi có thể tìm thấy là quanh nội dung với

<a4j:outputpanel id="whatever_id" />

ví dụ,

<a4j:outputpanel id="myDiv"> 
    <h:outputText id="on" value="ON" rendered="#{manager.isOn}" /> 
    <h:outputText id="off" value="OFF" rendered="#{not manager.isOn}" /> 
</a4j:outputpanel> 
Các vấn đề liên quan