2012-11-09 33 views
0

我想根據是否在extenedDataTable中選擇一行來獲取圖像來回交換。我能夠以非激活狀態顯示圖像,但無法弄清楚如何切換它。這裏是表格定義代碼:在JSF中選擇切換圖像extendedDataTable

<rich:extendedDataTable style="width: 800px; height: 150px;" 
rowClasses="Row0,Row1" value="#{myBean.exceptions}" var="exception" 
selectionMode="single" id="Table" selection="#{myBean.exceptionSelection}"> 
<a4j:ajax event="selectionchange" listener="#{myBean.rowListener}" render=""/> 

這是我想要切換圖像的列。我們的想法是改變在同一個目錄下名爲filledRadioButton圖像:

<rich:column id="selected_col" label="Selection"> 
<f:facet name="header"> 
<a4j:commandLink value="Selection" render="table"/> 
</f:facet> 
<h:graphicImage value="../resources/img/emptyRadioButton.jpg"/> 
</rich:column> 

感謝

回答

0

您可以使用DataTable的ajaxKeys屬性來專門引用的行(或列)爲Ajax更新。在您的支持bean

  1. 綁定您的數據表的ajaxKeys屬性爲Set<Integer>:因此,要實現這一點。這個集合將保存唯一的id類型值,這些值將引用數據表中的特定實體,以便在ajax響應中進行更新。

  2. 添加您希望通過Ajax更新到您的<a4j:ajax/>render列表中<h:graphicImage/>id屬性。設置圖像的動態表達式的值,因此您可以在支持Bean切換出來

    <a4j:ajax event="selectionchange" listener="#{myBean.rowListener}" render="indicatorImg"/>   
    <h:graphicImage id="indicatorImg" value="#{myBean.desiredImagePath}"/> 
    
  3. 線你的Ajax監聽到所選實體的ID添加到ajaxKeys設置和修改desiredImagePath財產你覺得合適。

    public void rowListener(AjaxBehaviourEvent evt){ 
    //I assume you're already managing your selection properly 
    //Change the value of the desiredImagePath here too. 
    ajaxKeysSet.add(mySelection.getId()); //if you want to update multiple rows 
         OR 
    ajaxKeysSet = Collections.singleton(mySelection.getId()); //save a single id for ajax update 
    }