如何在未聚焦时修复extendedData选择更改

时间:2010-06-30 09:28:41

标签: jsf seam richfaces

我们在使用包含extendedDataTable和一个或多个列表框的richfaces的seam应用程序中有一个页面。我们发现,一旦你在extendedDataTable中选择了一些然后切换到其中一个列表框,extendedDataTable就会一直响应向上和向下箭头键,所以如果你用它们来改变当前突出显示的列表框中的选择,extendedDataTable中的选择也会发生变化。

如果没有焦点,是否有一种解决方法可以阻止extendedDataTable更改选择?

不幸的是,代码相当复杂,但表格的xhtml是(为简单起见没有所有列):

<rich:extendedDataTable id="jobManJobListTable" enableContextMenu="false"
      value="#{jobman_view.paginatedJobList}" var="job" rows="25" selectionMode="multi"
      selection="#{jobman_view.jobListSelection}" height="">

    <a4j:support event="onselectionchange" reRender="detailsDiv,customerDiv"
                 action="#{jobman_view.onJobSelectionChange()}"/>

    <rich:column width="10%" sortable="true" 
        label="#messages['jobman.ui.joblist.table.column.heading.type']}">
        <h:graphicImage value="../img/job_type_#{job.jobType.imageName}_16x16.png"/>
        <rich:toolTip>
            <span style="white-space: nowrap">
                <strong>#{job.jobType.name}</strong>
            </span>
        </rich:toolTip>
    </rich:column>

</rich:extendedDataTable>

请注意,该表不包含在a4j:support Rerender中列出的任何div中。

对于支持bean,paginatedJobList只是一个作业列表,onJobSelectionChange更改作业,支持bean认为是选中的,这样详细div在reRendered时包含正确的数据,而jobListSelection只是一个SimpleSelection的getter / setter

它似乎与a4j:support有关,没有它,当另一个控件有焦点时,选择不会改变。

1 个答案:

答案 0 :(得分:0)

您可以编写智能JS函数并将其附加到onkeypress

extendedDataTable属性

此功能可以在选择某些内容时禁用滚动,并在未选择任何内容时启用它。