0

我正在尝试根据是否在扩展数据表中选择了行来获取图像来回交换。我能够以非活动状态显示图像,但不知道如何切换它。这是表定义代码:

<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>

谢谢

4

1 回答 1

0

您可以使用 dataTable 的ajaxKeys属性来专门引用一行(或多行)以进行 ajax 更新。所以要实现这一点:

  1. ajaxKeys将数据表的属性绑定到Set<Integer>支持 bean 中的 a。该集合将保存唯一的id类型值,这些值将引用数据表中的特定实体,以在 ajax 响应中更新。

  2. 将您希望通过 ajax 更新的id属性添加到您的. 将图像的值设置为动态表达式,以便您可以在支持 bean 中将其切换出来<h:graphicImage/>render<a4j:ajax/>

     <a4j:ajax event="selectionchange" listener="#{myBean.rowListener}" render="indicatorImg"/>        
     <h:graphicImage id="indicatorImg" value="#{myBean.desiredImagePath}"/>
    
  3. 连接您的 ajax 侦听器以将所选实体的 id 添加到ajaxKeysSet 并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
    }
    
于 2012-11-10T05:09:39.327 回答