【问题标题】:JSF PrimeFaces dynamic dataTable MapJSF PrimeFaces 动态数据表映射
【发布时间】:2013-03-14 09:18:56
【问题描述】:

在 PrimeFaces 和 dataTable 上处理动态表格内容。 目标是动态呈现表格列标题和内容。

这是我的 bean 代码:

@ManagedBean(name="treeBean")
@SessionScoped
public class TreeBean implements Serializable {
    private static Logger log = Logger.getLogger(TreeBean.class);
    private static final long serialVersionUID = 1L;
    private List<TableColHeader> tableColHeaderList;

    /** Project-specific data structure. One list entry per one table row, Integer in Map is number of column */
    private List<Map<Integer,String>> tableContent;

    public TreeBean() {
        tableColHeaderList=MockedDataProvider.getDemo1ColHeaderList();
        tableContent=MockedDataProvider.getDemo1TableContent();     
        log.info("TreeBean started");
    }

    public int getTableColHeaderIndex(TableColHeader tableColHeader) {
        return tableColHeaderList.indexOf(tableColHeader);
    } 

    public List<TableColHeader> getTableColHeaderList() {
        return tableColHeaderList;
    }

    public void setTableColHeaderList(List<TableColHeader> tableColHeaderList) {
        this.tableColHeaderList = tableColHeaderList;
    }

    public List<Map<Integer,String>>  getTableContent() {
        return tableContent;
    }

    public void setTableContent(List<Map<Integer,String>> tableContent) {
        this.tableContent = tableContent;
    }   

    public List<Integer> getTableContentIdKeysAsList(int id){
         return new ArrayList<Integer>(tableContent.get(id).keySet());
    }   
}

TableColHeader.java - 作为模型:

public class TableColHeader {   
    private String propertyUri;
    private String label;
    private String unitLabel;
    private String unitUri;
//getters,setters,equals,hashCode..
}

这是我的 JSF 页面数据表代码:

<p:dataTable id="queryResults" var="tableContentVar" value="#{treeBean.tableContent}">                                               
   <p:columns value="#{tableBean.tableColHeaderList}" var="column"  >  
     <f:facet name="header">  
     #{column.label}  
     </f:facet>                       
     <h:outputText value="#{tableContentVar.values().toArray()[treeBean.getTableColHeaderIndex(column)]}" /> 
   </p:columns>                                                       
</p:dataTable>   

我已经阅读了有关空 columnIndexVar 值为 https://code.google.com/p/primefaces/issues/detail?id=4449 的问题,但从 bean 获取索引也无济于事。

我只是在 dataTable 应该在的地方看不到任何东西,也没有例外。 请问有什么想法吗?

使用 Primefaces 3.5 和 JBoss 7.1.1.Final。

【问题讨论】:

  • tableContentMaptableContentVar 定义在哪里?
  • @Sergii 你应该写tableContentVar?
  • 谢谢,我正在检查..
  • 已修复tableContentVar/tableContentMap,同样的问题仍然存在
  • @Sergii 您的支持 bean 的名称是 treeBean,但在 p:columns 中您引用的是 tableBean

标签: jsf primefaces


【解决方案1】:

感谢@partlov,这里的错误是在 JSF 代码中引用 tableBean 而不是 treeBean

所以这里是工作代码:

<p:dataTable id="queryResults" var="tableContentVar" value="#{treeBean.tableContent}" >                                              
    <p:columns value="#{treeBean.tableColHeaderList}" var="column"  >  
    <f:facet name="header">  
     #{column.label}  
     </f:facet>                       
    <h:outputText value="#{tableContentVar.values().toArray()[treeBean.getTableColHeaderIndex(column)]}" /> 
    </p:columns>                                                      
</p:dataTable> 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-22
    • 2012-05-17
    • 2012-07-21
    • 2013-05-21
    • 1970-01-01
    • 2013-02-06
    • 2023-03-06
    • 2012-06-06
    相关资源
    最近更新 更多