2015-05-17 147 views
0

所以,我加載從H2數據庫列表中顯示時更新一次,並與從上頁的表單數據進行更新。在我第一次提交表單後,數據表只會在會話中更新一次。如果我重置tomcat服務器,則會顯示上次會話中提交的所有數據。我上傳,我認爲相關的所有代碼,:JSF的DataTable會議

管理的bean,與任務列表數據表:

@ManagedBean 
@SessionScoped 
public class TaskListController { 
private List<Task> taskList; 
private Task task; 

@PostConstruct 
private void init() { 
    taskList = TaskServiceDatabase.taskList(); 
} 

public String loadFirstPage() { 

    return "createNewTask.xhtml"; 
} 

public List<Task> getTaskList() { 
    return taskList; 
} 

//getters and setters 

任務列表方法:

public static List<Task> taskList() { 

    List<Task> taskList = new ArrayList<Task>(); 

    try { 
     taskList = DatabaseUtils.fetchTask(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return taskList; 
} 

取任務的方法與數據庫通信,我我相當肯定這可以正常工作,如果需要的話,我可以添加它。

這裏是the.xhtml文件:

<h:form id="form"> 
    <p:dataTable id="taskTable" var="task" rowIndexVar="taskNumber" 
     value="#{taskListController.taskList}" paginator="true" rows="10" 
     paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" 
     rowsPerPageTemplate="5,10,15"> 
     <p:column> 
      <f:facet name="header"> 
       <h:outputText value="Surname" /> 
      </f:facet> 
      <h:outputText value="#{task.user.surname}" /> 
     </p:column> 
     <p:column> 
      <f:facet name="header"> 
       <h:outputText value="Name" /> 
      </f:facet> 
      <h:outputText value="#{task.user.name}" /> 
     </p:column> 
     <p:column> 
      <f:facet name="header"> 
       <h:outputText value="Username" /> 
      </f:facet> 
      <h:outputText value="#{task.user.username}" /> 
     </p:column> 
     <p:column> 
      <f:facet name="header"> 
       <h:outputText value="Project name" /> 
      </f:facet> 
      <h:outputText value="#{task.project.projectName}" /> 
     </p:column> 
     <p:column> 
      <f:facet name="header"> 
       <h:outputText value="Company name" /> 
      </f:facet> 
      <h:outputText value="#{task.project.companyName}" /> 
     </p:column> 
     <p:column> 
      <f:facet name="header"> 
       <h:outputText value="Task description" /> 
      </f:facet> 
      <h:outputText value="#{task.description}" /> 
     </p:column> 
     <p:column> 
      <f:facet name="header"> 
       <h:outputText value="Time (h)" /> 
      </f:facet> 
      <h:outputText value="#{task.time}" /> 
     </p:column> 

    </p:dataTable> 
    <h:commandButton action="#{taskListController.loadFirstPage}" 
     value="Return" update="form" /> 
</h:form> 

所以,我做了什麼錯?

+0

按照您的實施方式工作。你將它加載到sessioncoped bean的postConstuct中,所以它只加載一次 – Kukeltje

+0

Yeap,將範圍更改爲ViewScoped後,它工作 – Sarpy

回答

0

將bean的範圍更改爲ViewScoped解決了問題