我正在使用一个丰富的extendedDataTable,它将填充用户名列表。一旦用户选择了所选的值将是粗体。但我的问题是,一旦表重置,之前选择的值仍以粗体显示。任何人都知道如何解决这个问题?
查看:
<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());
}
答案 0 :(得分: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>();
}
答案 1 :(得分:0)
回答这个可能为时已晚。同样的问题困扰着我。修复是清除a4j按钮的监听器/操作中的选择列表,并在a4j按钮的oncomplete事件中将ActiveRow设置为null(检查tbodies以处理空表格案例。
的onComplete = “(#{富:组分( 'TABLEID')} tbodies。)#丰富:组分( 'TABLEID')} setActiveRow(空): ''”
还在相应的操作中将bean中的selection属性设置为null。
答案 2 :(得分:0)
我刚刚发现如何在AJAX请求后重置客户端上的当前选择,添加&#39; onready&#39;听取美国东部时间:
onready="var edt = #{rich:component('yourExtendedDataTableId')}; edt.deselectRow(edt.activeIndex);"