1

我正在使用丰富的扩展数据表,它将填充用户名列表。一旦用户选择选定的值将是粗体。但我的问题是,一旦表格被重置,之前选择的值仍然是粗体。有谁知道如何解决这个问题?

看法 :

<rich:extendedDataTable value="#{reportBean.allActiveUsers}"
        var="user"
        selection="#{reportBean.selection}"
        selectionMode="multiple"
        style="height:175px; width:200px;"
        id="userist">
    <a4j:ajax execute="@this" event="selectionchange" listener="#{reportBean.userSelectionListener}" render="projectList"/>
    <rich:column width="160px">
        <h:outputText value="#{user.name}" />
        <h:inputHidden value="#{user.userId}"/>
    </rich:column>
</rich:extendedDataTable>

<a4j:commandButton id="clearBtn" value="Clear"  tabindex="4">
    <a4j:ajax event="click" execute="@this" listener="#{reportBean.reset}" render="resourceList"/>
 </a4j:commandButton>

代码 :

// Loading
List<User> allActiveUsers = new ArrayList<User>();

// Reset
allActiveUsers = new ArrayList<User>();

public void reset(){
    setAllActiveUsers(getUserFacade().getAllUsers());
}
4

3 回答 3

0

回答这个问题可能为时已晚。同样的问题困扰着我。修复方法是清除 a4j 按钮的侦听器/操作中的选择列表,并在 a4j 按钮的 oncomplete 事件中将 ActiveRow 设置为 null(检查 tbodies 以处理空表情况。

oncomplete="(#{rich:component('tableID')}.tbodies)?#rich:component('tableID')}.setActiveRow(null):''"

还要在相应的操作中将 bean 中的选择属性设置为 null。

于 2014-03-05T18:50:27.170 回答
0

a4j:ajax你的按钮有点乱,使用的时候不需要,a4j:commandButton因为这个组件已经是AJAX了。

<a4j:commandButton id="clearBtn" value="Clear"  tabindex="4">
    <a4j:ajax event="click" execute="@this" listener="#{reportBean.reset}" render="resourceList"/>
</a4j:commandButton>

为了这 :

<a4j:commandButton value="Clear" tabindex="4" execute="@this" listener="#{reportBean.reset()}" render="resourceList userist"/>

您缺少要更新的正确组件,我也怀疑您的侦听器已被调用。在 JSF 2.0 中,您可以调用不带参数的侦听器方法,但是这样做时,您需要()在末尾添加。否则,您应该像这样声明您的方法:

public void reset(AjaxBehaviorEvent event) {
    allActiveUsers = new ArrayList<User>();
}
于 2013-06-10T06:39:51.050 回答
0

我刚刚发现如何在 AJAX 请求后重置客户端上的当前选择,向 EDT 添加一个“就绪”侦听器:

onready="var edt = #{rich:component('yourExtendedDataTableId')}; edt.deselectRow(edt.activeIndex);"
于 2015-04-24T15:03:49.787 回答