在会话期间,JSF Datatable仅更新一次

时间:2015-05-17 15:24:10

标签: jsf primefaces datatable

所以,我正在加载一个显示H2数据库的列表,并使用上一页表单中的数据进行更新。在我第一次提交表单后,数据表在会话中仅更新一次。如果我重置tomcat服务器,将显示上次会话中提交的所有数据。我将上传所有我认为相关的代码:

托管bean,使用TaskList数据表:

@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;
}

获取任务方法正在与数据库通信,我相当确定这是正常的,如果需要,我可以添加它。

这是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>

那么,我做错了什么?

1 个答案:

答案 0 :(得分:0)

将bean的范围更改为ViewScoped解决了问题