在JSF extendedDataTable中选择切换图像

时间:2012-11-09 18:24:35

标签: jsf-2 richfaces

我试图让一个图像来回交换,如果在extenedDataTable中选择了一行。我能够以非活动状态显示图像,但无法弄清楚如何切换它。这是表定义代码:

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

由于

1 个答案:

答案 0 :(得分:0)

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

  1. 将数据表的ajaxKeys属性绑定到辅助bean中的Set<Integer>。此集将包含唯一的id类型值,这些值将引用数据表中要在ajax响应中更新的特定实体。

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

    render
  3. 连接您的ajax侦听器,将所选实体的ID添加到<a4j:ajax/>设置,并根据需要修改 <a4j:ajax event="selectionchange" listener="#{myBean.rowListener}" render="indicatorImg"/> <h:graphicImage id="indicatorImg" value="#{myBean.desiredImagePath}"/> 属性。

    ajaxKeys