2014-02-18 54 views
1

免責聲明 - 這不是Is it possible to use p:cellEditor inside a p:columns tag? DUP(閱讀這兩個第一)primefaces - 可編輯的動態表

我試圖適應這種解決我的背景 - http://forum.primefaces.org/viewtopic.php?f=3&t=13275

我有一個動態表,這樣

Managed Bean的

@ManagedBean 
@ViewScoped 
public class MyMB implements Serializable { 

private List<String> columns = new ArrayList<String>(); 

private List<Map<String,String>> data; 

private List<Map<String,String>> filteredData; 

private String defaultColumnSort; 

public void onCellEdit(CellEditEvent event) { 
    System.out.println(event.getRowIndex()); 
} 

(...) 

和XHTML

  <p:dataTable 
      var="dataRow" 
      value="#{myMB.data}" 
      paginator="true" rows="10" 
      paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}" 
      rowsPerPageTemplate="10,50,100" 
      emptyMessage="No sites found with given criteria" 
      filteredValue="#{myMB.filteredData}" 
      editable="true" 
      editMode="cell" 
      sortBy="#{myMB.defaultColumnSort}" 
      id="rowsTable">    
      <p:ajax event="cellEdit" listener="#{myMB.onCellEdit}"/> 
<ui:remove> 
      <p:columns value="#{myMB.columns}" var="column" columnIndexVar="colIndex" sortBy="#{column}" filterBy="#{column}" filterMatchMode="contains"> 
       <f:facet name="header">#{column}</f:facet> 
       <p:cellEditor> 
        <f:facet name="output"> 
         <h:outputText value="#{dataRow[column]}" /> 
        </f:facet> 
        <f:facet name="input"> 
         <p:inputText id="modelInput" value="#{dataRow[column]}" style="width:96%"/> 
        </f:facet> 
       </p:cellEditor> 
      </p:columns> 
</ui:remove> 

      <c:forEach items="#{myMB.columns}" var="column" varStatus="loop"> 
       <p:column headerText="#{column}"> 
        <p:cellEditor> 
         <f:facet name="output"> 
         <h:outputText value="#{dataRow[loop.index].value}" /> 
         </f:facet> 
         <f:facet name="input"> 
         <p:inputText value="#{dataRow[loop.index].value}" /> 
         </f:facet> 
        </p:cellEditor>  
       </p:column> 
      </c:forEach>    

ui:remove作品之間的部分(如果我明顯移除了ui:remove標籤)並向我顯示不可編輯的表格。

我想將p:cellEditor行爲添加到這些單元格,但由於它不適用於p:columns,因此上面的鏈接建議使用c:forEach將p:列解開爲幾個p:列項目, ,對於其中的每一個,應用p:cellEditor。

上面還鏈接引用一個死鏈接 - https://stackoverflow.com/questions/10229453/jsf-using-primefaces-datatable-to-implement-a-generic-table-viewer-editor-based :-(

的問題是:外UI的部分:刪除編譯並顯示我用空單元格的表,所以這聽起來像我與搞亂值語法這裏H:?的outputText值

什麼是聲明在這種情況下,單元格內容的正確方法

我使用primefaces 4.

回答

1

的問題是在此行

<p:columns value="#{mappingEngineSearchMB.columns}" var="column" columnIndexVar="colIndex" sortBy="#{column}" filterBy="#{column}" filterMatchMode="contains"> 

由於表是可搜索的,並且可以被過濾,這些預期值。

因爲JSF是如此的離散,它只是決定不告訴任何人的錯誤是,(JSF是soooooooooo分立),並決定只呈現了不少空桌

現在表工作正常的。