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