Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 2 Primefaces数据表在托管bean之间传递参数后未更新_Jsf 2_Primefaces_Datatable_Glassfish 3_Managed Property - Fatal编程技术网

Jsf 2 Primefaces数据表在托管bean之间传递参数后未更新

Jsf 2 Primefaces数据表在托管bean之间传递参数后未更新,jsf-2,primefaces,datatable,glassfish-3,managed-property,Jsf 2,Primefaces,Datatable,Glassfish 3,Managed Property,我目前正在使用带有简单CRUD操作的Primefaces datatable。此数据表显示先前在另一个显示项目工作列表的数据表中选择的工作列表的任务。为了获得所选的工作列表,我将WorkListManagedBean注入TaskManagedBean。当我从所选工作列表中创建或删除任务时,任务已在数据库中成功完成,但datatable未更新:(.这是我的任务管理Bean: @ManagedBean(name = "taskMBean") @ViewScoped public class Taks

我目前正在使用带有简单CRUD操作的Primefaces datatable。此数据表显示先前在另一个显示项目工作列表的数据表中选择的工作列表的任务。为了获得所选的工作列表,我将WorkListManagedBean注入TaskManagedBean。当我从所选工作列表中创建或删除任务时,任务已在数据库中成功完成,但datatable未更新:(.这是我的任务管理Bean:

@ManagedBean(name = "taskMBean")
@ViewScoped
public class TaksMBean implements Serializable {

   @ManagedProperty("#{workListMBean}")
   private WorkListMBean workListMBean;
   @Inject
   private TaskBusinessLocal taskBusinessLocal;
   @Inject
   private ResourceBusinessLocal resourceBusinessLocal;
   private String description, code;
   private Date startDate, endDate;
   private Status status;
   private List<Resource> resources, resourceslist;
   private List<Task> filteredTasks, tasks;
   private Task selectedTask;
   private WorkList selectedWorkList;

   @PostConstruct
   public void init() {
     selectedTask = new Task();
     selectedWorkList = workListMBean.getSelectedWorkList();
    }

   public List<Task> getTasks() {
     return tasks=workListMBean.getTasksList();
    }

   public void setTasks(List<Task> tasks) {
     this.workListMBean.setTasks(tasks) ;
    }

    public List<Resource> getAllResources() {
     return resourceBusinessLocal.allResources();
    }

    public Status[] getAllStatus() {
     return Status.values();
    }

    public String addTask() {
      taskBusinessLocal.addTask(description, code, startDate,  
         endDate,status,    
       selectedWorkList, resources);
       return "index";
     }

    public String upDateTask() {
      taskBusinessLocal.updateTask(selectedTask);
      return "index";
     }

    public String deleteTask() {
      taskBusinessLocal.deleteTask(selectedTask);
      return "index";
     }

    public Status getStatus() {
      return status;
     }

    public void setStatus(Status status) {
      this.status = status;
     }

    public String getDescription() {
     return description;
     }

    public void setDescription(String description) {
      this.description = description;
     }

    public Date getStartDate() {
       return startDate;
     }

    public void setStartDate(Date startDate) {
        this.startDate = startDate;
     }

    public Date getEndDate() {
        return endDate;
     }

    public void setEndDate(Date endDate) {
       this.endDate = endDate;
     }

    public String getCode() {
     return code;
     }

    public void setCode(String code) {
     this.code = code;
     }

    public List<Resource> getResources() {
      return resources;
     }

    public void setResources(List<Resource> resources) {
      this.resources = resources;
     }

    public List<Resource> getResourceslist() {
      return resourceslist;
     }

    public void setResourceslist(List<Resource> resourceslist) {
      this.resourceslist = resourceslist;
     }

    public List<Task> getFilteredTasks() {
      return filteredTasks;
     }

    public void setFilteredTasks(List<Task> filteredTasks) {
     this.filteredTasks = filteredTasks;
     }

    public Task getSelectedTask() {
     return selectedTask;
     }

    public void setSelectedTask(Task selectedTask) {
      this.selectedTask = selectedTask;
     }

    public WorkListMBean getWorkListMBean() {
      return workListMBean;
     }

    public void setWorkListMBean(WorkListMBean workListMBean) {
     this.workListMBean = workListMBean;
     }

    public WorkList getSelectedWorkList() {
      return workListMBean.getSelectedWorkList();
    }
    }
@ManagedBean(name=“taskMBean”)
@视域
公共类TaksBean实现了可序列化{
@ManagedProperty(“#{workListMBean}”)
私有WorkListMBean WorkListMBean;
@注入
私人TaskBusinessLocal TaskBusinessLocal;
@注入
私人资源企业本地资源企业本地;
私有字符串描述,代码;
私有日期开始日期,结束日期;
私人身份;
私有列表资源,资源列表;
私有列表筛选任务、任务;
私人任务选择任务;
私有工作列表selectedWorkList;
@施工后
公共void init(){
selectedTask=新任务();
selectedWorkList=workListMBean.getSelectedWorkList();
}
公共列表getTasks(){
return tasks=workListMBean.getTasksList();
}
公共任务(列出任务){
this.workListMBean.setTasks(tasks);
}
公共列表getAllResources(){
返回resourceBusinessLocal.allResources();
}
公共状态[]getAllStatus(){
返回Status.values();
}
公共字符串addTask(){
taskBusinessLocal.addTask(说明、代码、起始日期、,
结束日期,状态,
selectedWorkList,资源);
返回“索引”;
}
公共字符串upDateTask(){
taskBusinessLocal.updateTask(已选择任务);
返回“索引”;
}
公共字符串deleteTask(){
taskBusinessLocal.deleteTask(已选择任务);
返回“索引”;
}
公共状态getStatus(){
返回状态;
}
公共无效设置状态(状态){
这个状态=状态;
}
公共字符串getDescription(){
返回说明;
}
公共void集合描述(字符串描述){
this.description=描述;
}
公共日期getStartDate(){
返回起始日期;
}
公共作废设置开始日期(日期开始日期){
this.startDate=startDate;
}
公共日期getEndDate(){
返回结束日期;
}
公共无效设置结束日期(日期结束日期){
this.endDate=endDate;
}
公共字符串getCode(){
返回码;
}
公共无效设置码(字符串码){
this.code=代码;
}
公共列表getResources(){
归还资源;
}
公共资源(列出资源){
这就是资源=资源;
}
公共列表getResourceslist(){
返回资源列表;
}
public void setResourceslist(列表resourceslist){
this.resourceslist=resourceslist;
}
公共列表getFilteredTasks(){
返回filteredtask;
}
公共void setFilteredTasks(列出filteredTasks){
this.filteredTasks=filteredTasks;
}
公共任务getSelectedTask(){
返回所选任务;
}
公共无效设置选定任务(任务选定任务){
this.selectedTask=selectedTask;
}
公共WorkListMBean getWorkListMBean(){
返回工作列表;
}
public void setWorkListMBean(WorkListMBean WorkListMBean){
this.workListMBean=workListMBean;
}
公共工作列表getSelectedWorkList(){
返回workListMBean.getSelectedWorkList();
}
}
这是我的JSF页面:

 <ui:composition template="/templates/layout.xhtml"
            xmlns="http://www.w3.org/1999/xhtml"
            xmlns:f="http://java.sun.com/jsf/core"
            xmlns:h="http://java.sun.com/jsf/html"
            xmlns:ui="http://java.sun.com/jsf/facelets"
            xmlns:p="http://primefaces.org/ui"
            xmlns:c="http://java.sun.com/jsp/jstl/core">

 <ui:define name="content">

    <h:form id="form">
        <p:contextMenu for="tasks">  
            <p:menuitem value="View" update="taskView" 
                        icon="ui-icon-search"   oncomplete="taskDialogView.show()"/>  
            <p:menuitem value="Update" update="taskUpdate"
                        icon="ui-icon-arrowrefresh-1-w"  
                        oncomplete="taskDialogUpdate.show()"/>  
            <p:menuitem value="Delete" update="tasks"
                        icon="ui-icon-close"  onclick="confirmation.show();"/>  
        </p:contextMenu>
        <p:dataTable id="tasks" value="#{taskMBean.tasks}" 
                     var="item"  rowsPerPageTemplate="5,10,15,20,25,30" 
                     paginator="true" rows="10" 
                     filteredValue="#{taskMBean.filteredTasks}"
                     selection="#{taskMBean.selectedTask}" 
                     rowKey="#{item.id}" selectionMode="single">
        <p:ajax event="rowSelect" update=":form:tasks, :form:taskView , 
                    :form:taskUpdate , :form:confirmDelete"/> 
        <f:facet name="header" >  
        <p:outputLabel value="List of WorkList (# 
                     {taskMBean.selectedWorkList.code}) tasks"/>
        </f:facet> 
        <p:column sortBy="#{item.description}" filterBy="#{item.description}">
                <f:facet name="header">
                    <p:outputLabel value="Description"/>
                </f:facet>
                <p:outputLabel value="#{item.description}">
                </p:outputLabel>
            </p:column>
            <p:column sortBy="#{item.code}" filterBy="#{item.code}">
                <f:facet name="header">
                    <p:outputLabel value="Code"/>
                </f:facet>
                <p:outputLabel value="#{item.code}">
                </p:outputLabel>
            </p:column>
            <p:column sortBy="#{item.startDate}" filterBy="#{item.startDate}">
                <f:facet name="header">
                    <p:outputLabel value="Start Date"/>

                </f:facet>
                <h:outputText value="#{item.startDate}">
                    <f:convertDateTime pattern="MM/dd/yyyy" />
                </h:outputText>
            </p:column>
            <p:column sortBy="#{item.endDate}" filterBy="#{item.endDate}">
                <f:facet name="header">
                    <p:outputLabel value="End Date"/>

                </f:facet>
                <h:outputText value="#{item.endDate}">
                    <f:convertDateTime pattern="MM/dd/yyyy" />
                </h:outputText>
            </p:column>
            <f:facet name="footer">
                <p:commandButton value="New Task" oncomplete="TaskDialogNew.show()" 
                   icon="ui-icon-star" title="New Task"/>
                <p:commandButton value="Delete Task"  actionListener="#
                  {taskMBean.deleteTask()}" update="tasks" icon="ui-icon-trash" 
                   style="margin-left: 5px"/>
                <p:button value="Back"  outcome="WorkLists.xhtml" icon="ui-icon-
                   arrowthick-1-w" style="margin-left: 900px"/>
            </f:facet>
        </p:dataTable>
        <p:dialog header="Task Detail" widgetVar="taskDialogView" resizable="false"  
                  showEffect="clip" hideEffect="fold" style="position: absolute ;"  
                  id="dialogView">  
            <p:panelGrid id="taskView" columns="2" >  
                <f:facet name="header">  
                    <p:graphicImage value="/images/task.png"/>  
                </f:facet>
                <p:outputLabel value="Code:" />
                <p:outputLabel value="#{taskMBean.selectedTask.code}" title="Code" />
                <p:outputLabel value="Description:" />
                <p:outputLabel  value="#{taskMBean.selectedTask.description}" />
                <p:outputLabel value="Resources"/>
                <p:dataList value="#{taskMBean.selectedTask.resources}" var="item" 
                            itemType="square">
                            #{item.name} (#{item.code})
                </p:dataList>
                <p:outputLabel value="Start Date"/>
                <p:outputLabel value="#{taskMBean.selectedTask.startDate}" >
                    <f:convertDateTime pattern="MM/dd/yyyy" />
                </p:outputLabel>
                <p:outputLabel value="End Date"/>
                <h:outputText value="#{taskMBean.selectedTask.endDate}" title="EndDate">
                    <f:convertDateTime pattern="MM/dd/yyyy" />
                </h:outputText> 
                <p:outputLabel value="Status"/>
                <p:outputLabel value="#{taskMBean.selectedTask.status}"/>
            </p:panelGrid>  
        </p:dialog>  
        <p:dialog header="task Update" widgetVar="taskDialogUpdate" resizable="false"  
                  showEffect="clip" hideEffect="fold" style="position: absolute ;" 
                  id="dialogUpdate">  
            <p:panelGrid id="taskUpdate" columns="2" >  
                <f:facet name="header">  
                    <p:graphicImage value="/images/task.png"/>  
                </f:facet> 
                <p:outputLabel value="Code:" for="code" style="width: 242px"/>
                <p:inputText id="code" value="#{taskMBean.selectedTask.code}" 
                   style="width: 236px" required="true" requiredMessage="The Code field 
                    is required."/>
                <p:outputLabel value="Description:" for="description" />
                <p:inputTextarea id="description" 
                   value="# {taskMBean.selectedTask.description}"  required="true" 
                   requiredMessage="The Description 
               field is required."/>
                <p:outputLabel value="Resources" for="resources"/>
                <p:selectCheckboxMenu id="resources" value="#
                  {taskMBean.selectedTask.resources}" style="width: 241px" 
                  label="Select Resources" required="true" requiredMessage="The List of 
                  Resources field is required.">
                    <f:selectItems value="#{taskMBean.allResources}" var="item"  
                  itemLabel="#{item.name}" itemValue="#{selectedTask.resources}"  />
                    <f:converter 
                     converterId="com.gis.plannerplus.converters.ObjectConverterResource
                      " />
      </p:selectCheckboxMenu>
                    <p:outputLabel value="Status" for="status"/>
                <p:selectOneMenu id="status" value="#{taskMBean.selectedTask.status}" 
                  style="width: 241px" required="true" requiredMessage="The customer 
                  field is required.">
                    <f:selectItems value="#{taskMBean.allStatus}" var="s" itemLabel="#
                {s.status}"/>
                </p:selectOneMenu>

                <p:outputLabel for="startdate" value="Start "  />  
                <p:calendar  id="startdate" required="true" label="StartDate" 
                 style="width: 240px" binding="#{startdate}"
                             effect="fold"   value="#
                {taskMBean.selectedTask.startDate}" pattern="dd/MM/yy" >
                    <p:ajax process="startdate finishDate" update="toDateMsg" />
                </p:calendar>
                <p:outputLabel for="finishDate" value="End " />  
                <p:calendar  id="finishDate" label="FinishDate"  style="width: 240px" 
                 pattern="dd/MM/yy"
                             effect="fold"  value="#{taskMBean.selectedTask.endDate}" >
                    <f:attribute name="startDate" value="#{startdate.value}" />
                    <f:validator validatorId="validator.dateRangeValidator" />
                    <p:ajax process="startdate  finishDate" update="toDateMsg" />
                    <p:message for="finishDate" id="toDateMsg" >
                    </p:message>
                </p:calendar>
            </p:panelGrid> 
            <p:commandButton value="Clear" type="reset" icon="ui-icon-arrowrefresh-1-n"
            styleClass="ui-priority-primary"/>  
            <p:commandButton value="Save" ajax="false" icon="ui-icon-circle-check" 
            styleClass="ui-priority-primary" action="#{taskMBean.upDateTask()}" />  
        </p:dialog>  
        <p:confirmDialog id="confirmDelete" message="Are you sure ?"  appendTo="@(body)"
                         header="Delete Task?" severity="alert" 
          widgetVar="confirmation" style="width: auto">  
            <p:commandButton id="confirm" value="Yes" ajax="false"   />  
            <p:commandButton id="decline" value="No" onclick="confirmation.hide();" 
           type="button" />   
        </p:confirmDialog> 
    </h:form>


    <h:form id="newTaskForm">
        <p:dialog header="New Task" widgetVar="TaskDialogNew" resizable="false"  
                  showEffect="clip" hideEffect="fold" style="position: absolute ;" 
     id="dialogNewTask">  
            <p:panel id="panel">   
                <p:messages id="messages" />
                <p:panelGrid id="newTask" columns="2" style="margin-bottom:10px" >  
                    <f:facet name="header">  
                        <p:graphicImage value="/images/task.png"/>  
                    </f:facet>
                    <p:outputLabel value="Code:" for="code" />
                    <p:inputText  id="code" value="#{taskMBean.code}" style="width: 
       236px"  required="true" requiredMessage="The Code field is required."/>
                    <p:outputLabel value="Description:" for="description" />
                    <p:inputTextarea id="description" value="#{taskMBean.description}" 
       style="width: 236px" required="true" requiredMessage="The Description field is
           required."/>


                    <p:outputLabel value="Resources" for="resources"/>
                    <p:selectCheckboxMenu id="resources" value="#{taskMBean.resources}"
       style="width: 241px" label="Select Resources"  >
                        <f:selectItems value="#{taskMBean.allResources}" var="item" 
        itemLabel="#{item.name}" itemValue="#{resources}"   />
                        <f:converter 
       converterId="com.gis.plannerplus.converters.ObjectConverterResource" />
                    </p:selectCheckboxMenu>
                       <p:outputLabel value="Status" for="status"/>
                    <p:selectOneMenu id="status" value="#{taskMBean.status}" 
        style="width: 241px" required="true" requiredMessage="The customer field is 
        required.">
                        <f:selectItems value="#{taskMBean.allStatus}" var="s" 
        itemLabel="#{s.status}"/>
                    </p:selectOneMenu>
                    <p:outputLabel for="startDate" value="Start "  />  
                    <p:calendar  id="startDate" required="true" label="StartDate" 
        style="width: 260px" binding="#{startDate}"
                                 effect="fold"   value="#{taskMBean.startDate}" 
          pattern="dd/MM/yy" >
                        <p:ajax process="startDate finishDate" update="toDateMsg" />
                    </p:calendar>
                    <p:outputLabel for="finishDate" value="End " />  
                    <p:calendar  id="finishDate" label="FinishDate"  style="width: 
          240px"
                                 effect="fold" required="true"  value="# 
                              {taskMBean.endDate}" >
                        <f:attribute name="startDate" value="#{startDate.value}" />
                        <f:validator validatorId="validator.dateRangeValidator" />
                        <p:ajax process="startDate  finishDate" update="toDateMsg" />
                        <p:message for="finishDate" id="toDateMsg" >
                        </p:message>
                    </p:calendar>
                </p:panelGrid> 
                <p:commandButton type="reset" value="Clear" icon="ui-icon-
            arrowrefresh-1-n" styleClass="ui-priority-primary"/>
                <p:commandButton value="Submit" ajax="false" process="@form" 
            update=":form:tasks, :growl"  oncomplete=" handleSubmitRequest(xhr, status, 
            args, 'TaskDialogNew','newTaskForm');" actionListener="#{taskMBean.addTask
           ()}"/> 
            </p:panel>
        </p:dialog>  
    </h:form>

    <p:growl id="growl" showDetail="true" life="5000" />
    <script>
                function handleSubmitRequest(xhr, status, args, dialogName, formName) {
                    dialog = jQuery('#' + dialogName);
                    if (args.validationFailed) {
                        dialog.effect("shake", {times: 3}, 100);
                    } else {
                        clearForm(formName);
                        TaskDialogNew.hide();
                        taskDialogUpdate.hide();

                    }
                }
                function clearForm(formName) {
                    jQuery('#' + formName).each(function() {
                        this.reset();
                    });
                }

    </script>
    </ui:define>
     </ui:composition>

#{item.name}(#{item.code})
 <p:commandButton id="confirm" value="Yes" update="form:tasks"   />  
   @NamedQuery(name = "task.findByWorklist", query = "select t from Task t where 
     t.worklist=:worklist"),
   @Override
   public List<Task> findByWorklist(WorkList worklist) {
     Query query = 
     em.createNamedQuery("task.findByWorklist").setParameter("worklist", worklist);
     return (List<Task>) query.getResultList();
   }
  public List<Task> getTasks() {
    return tasks=workListMBean.getTasksList();
  }

  public void setTasks(List<Task> tasks) {
    this.workListMBean.setTasks(tasks) ;
  }
 public List<Task> getTasks() {
    return tasks=taskManagerLocal.findByWorkList(selectedWorkList);
 }