2013-10-03 4 views
1

У меня есть фасоль:Refresh р: 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> имеет атрибут update, который используется для обновления Ajax-компонентов с указанным списком запятой/разделенных пробелами идентификаторов, так вам нужно добавить идентификатор вашей таблицы данных для этого атрибута:

<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

Смежные вопросы