2013-10-03 40 views
1

我有一顆豆:刷新號碼:無按鈕的dataTable點擊

@ManagedBean 
@SessionScoped 
public class MainTable 
{ 

    static List<MainTableRow> rows; 

    public MainTable() 
    { 
     rows = new ArrayList<>(); 
    } 

    public static boolean addRow(MainTableRow mainTableRow) 
    { 
     return rows.add(mainTableRow); 
    } 

    public List<MainTableRow> getRows() 
    { 
     return rows; 
    } 

    public void setRows(List<MainTableRow> rows) 
    { 
     MainTable.rows = rows; 
    } 
} 

我的XHTML頁面是:

<h:body> 
    <h3>Query Modeling Tool - Select Excel file</h3> 
    <h:form> 
     <p:fileUpload 
      fileUploadListener="#{fileUploadController.handleFileUpload}" 
      mode="advanced" dragDropSupport="false" update="messages" 
      sizeLimit="10000000" fileLimit="3" allowTypes="/(\.|\/)(xls)$/" 
      style="font-size: 14px" /> 

     <p:growl id="messages" showDetail="true" /> 

     <p:dataTable id="dataTable" var="mainTableRow" 
      value="#{mainTable.rows}" style="font-size: 14px"> 
      <f:facet name="header">Main Table</f:facet> 

      <p:column sortBy="" headerText="Index"> 
       <h:outputText value="#{mainTableRow.index}" /> 
      </p:column> 
      <p:column sortBy="" headerText="Query"> 
       <h:outputText value="#{mainTableRow.query}" /> 
      </p:column> 
      <p:column sortBy="" headerText="S1"> 
       <h:outputText value="#{mainTableRow.s1}" /> 
      </p:column> 
      <p:column sortBy="" headerText="S2"> 
       <h:outputText value="#{mainTableRow.s2}" /> 
      </p:column> 
      <p:column sortBy="" headerText="S3"> 
       <h:outputText value="#{mainTableRow.s3}" /> 
      </p:column> 
      <p:column sortBy="" headerText="S9"> 
       <h:outputText value="#{mainTableRow.s9}" /> 
      </p:column> 
      <p:column sortBy="" headerText="Uygunluk"> 
       <h:outputText value="#{mainTableRow.uygunluk}" /> 
      </p:column> 
      <p:column sortBy="" headerText="Kural"> 
       <h:outputText value="#{mainTableRow.kural}" /> 
      </p:column> 
      <p:column sortBy="" headerText="Kaynak"> 
       <h:outputText value="#{mainTableRow.kaynak}" /> 
      </p:column> 
      <p:column sortBy="" headerText="Query Type"> 
       <h:outputText value="#{mainTableRow.queryType}" /> 
      </p:column> 
      <p:column sortBy="" headerText="User Intent"> 
       <h:outputText value="#{mainTableRow.userIntent}" /> 
      </p:column> 

     </p:dataTable> 

    </h:form> 

</h:body> 

在MainTable「行」是由另一個類填充,上傳文件後。 上傳後我想要刷新dataTable而不點擊任何按鈕。 我該怎麼辦?

回答

2

它可以通過以下幾點之一來解決:

1.<p:fileUpload>具有用於Ajax的更新部件用逗號/空格分隔ID的指定列表的屬性update,所以您需要將您的數據表的ID添加到該屬性:

<p:fileUpload ... update="messages dataTable" /> 

2.當一個文件被上傳後,該表還可以通過編程在你的操作方法更新:

RequestContext context = RequestContext.getCurrentInstance(); 
context.addPartialUpdateTarget("<path_to_your_table>"); 

參見:

+0

我不明白? – yetAnotherSE

+2

@RongNK爲什麼不簡單地使用''? – skuntsel

+0

@skuntsel 正在工作謝謝。但我已經使用更新的「消息」..我怎麼能寫他們兩個(消息和dataTable)? – yetAnotherSE