取消选择数据表中的选定行

时间:2015-05-18 10:14:31

标签: jsf java-ee primefaces

我正在处理具有单一选择模式的数据表。我的问题是,当我刷新页面时,刷新之前刷新的相同行将刷新。 关于在这种情况下如何取消选择所有数据表行的任何想法。 我很感激帮助我解决这个问题。

这是我的数据表代码:

    <p:dataTable id="cars1" var="car"   widgetVar="carsTable" value="#{typePrimeManager.tprimes}" editable="false" style="margin-bottom:20px"  paginator="false"  selectionMode="single" selection="#{typePrimeManager.selectedtype}" rowKey="#{car.idPrime}">
    <p:ajax event="rowSelect" update=":form:cars2" />
    <p:ajax event="rowUnselect" listener="#{typePrimeManager.setSelectedtype(null)}" update=":form:cars2"/>
    <p:ajax event="rowUnselect" listener="#{typePrimeManager.setSelectedtype(null)}" update=":form:cars2"/>
    <p:column headerText="intitule des types">  
    <h:outputText value="#{car.intitulePrime}" />
    </p:column>
    </p:dataTable>

2 个答案:

答案 0 :(得分:0)

您使用SessionScoped的托管bean?这使价值保持不变。我建议您阅读:How to choose the right bean scope?

如果您想继续使用SessionScope并重置所选行,则必须清理bean中的selectedtype

答案 1 :(得分:0)

如果您必须拥有会话范围的bean,则需要清除DataTable保存的值以引用所选项目,在您的情况下为PreRenderView

因此,如果您将此值设置为null,或者任何不在DataTable数据源中的相同类型的对象将解决您的问题,但您必须在重新加载页面之前执行此操作。要获得该事件,您可以使用预定义的JSF事件(如{{1}})来执行清除所选值的方法,或者您可以定义一个remoteCommand来调用相应的bean方法并执行该remoteCommand加载页面时使用javascript。