Jsf 2 数据表中的重复行

Jsf 2 数据表中的重复行,jsf-2,primefaces,Jsf 2,Primefaces,我正在使用JSF2.0和primefaces。使用命令按钮,我导航到另一个页面,该页面显示加密项目的数据表。 我的问题是,该数据表中的每一行显示两次,尽管我在命令按钮BalusC解决方案之一中使用了preRenderView事件 我的XHTML代码 <p:commandButton id="Later" style="width: 20%;height: 100%" value="Later" oncomplete="window.location.href = '/Hitonclick/

我正在使用JSF2.0和primefaces。使用命令按钮,我导航到另一个页面,该页面显示加密项目的数据表。 我的问题是,该数据表中的每一行显示两次,尽管我在命令按钮BalusC解决方案之一中使用了preRenderView事件

我的XHTML代码

<p:commandButton id="Later" style="width: 20%;height: 100%" value="Later" oncomplete="window.location.href = '/Hitonclick/data.xhtml'"  >
   <f:event type="preRenderView" listener="#{MB.preRender}"/>
</p:commandButton>
<p:dataTable id="datasTable" value="#{MB.dataList}"  var="item" rowsPerPageTemplate="5,10,15" paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" 
                             paginator="true" rows="10" styleClass="case-table"  emptyMessage="No records found with given criteria" paginatorPosition="bottom" 
                             selectionMode="single" rowKey="#{item}" filteredValue="#{MB.filteredDatas}"  
                             selection="#{MB.selectedData}"  >
   <p:ajax event="rowSelect" />

   <p:column styleClass="blockable" filterStyle="width: 250px"  filterBy="#{item} " sortBy="#{item}">
      <h:outputText value="#{item}"/>
   </p:column>
</p:dataTable>

我的部分课程已处理过managedBean

 @PostConstruct
 public void init() {
        mailList=new ArrayList<>();
 }
 public void preRender(ComponentSystemEvent event) {
        // Or in some SystemEvent method (e.g. <f:event type="preRenderView">).
           dataList=this.protectDatas();
 } 
 public ArrayList<String> getDataList() {
        return dataList;
 }
 public void setDataList(ArrayList<String> dataList) {
        this.dataList = dataList;
 } 
@PostConstruct
公共void init(){
mailList=新的ArrayList();
}
公共void预呈现(ComponentSystemEvent事件){
//或者在某些SystemEvent方法中(例如)。
dataList=this.protectDatas();
} 
公共ArrayList getDataList(){
返回数据列表;
}
公共无效setDataList(ArrayList dataList){
this.dataList=dataList;
} 
protectData()方法

public ArrayList<String> protectDatas(){
      for (int k = 0; k < datass.size(); k++) {
        String originalText;
        originalText = (String) datass.get(k).toString();

        String subStringToFind = "@";
        int x = originalText.indexOf(subStringToFind);

        String s1 = originalText.substring(x + 1);
        String f = originalText.replace(s1, "*******.***");

        getDataList().add(f);
       }
   return dataList;   
}
public ArrayList protectDatas(){
对于(int k=0;k
不能在primefaces数据表上迭代集合。提及

您可以尝试删除重复项,但仍有如下列表

yourList.clear();
yourList.addAll(new HashSet<>(yourList));
yourList.clear();
addAll(新HashSet(yourList));

根据您设置问题的方式,您是否暗示
this.protectDatas()
后面的代码实际上不是返回重复行的代码?@BalusC是这.protectDatas()导致问题的原因?您确定
protectDatas
返回的是非重复行吗?您可以返回一个
Set
,而不是
ArrayList
,以避免出现这种情况。是否有任何下行投票背后的原因。请用事实证明我,你没有回答这个问题。OP没有在任何地方使用
集合
,您也没有指出导致重复行的实际错误。