2016-06-23 62 views
-1

大家好,我正在嘗試構建一個網頁,其中第二個依賴於第二個。我的XHTML文件和我的bean一樣。 當我嘗試創建一個新的「structureAttache」我有以下問題我試圖用@viewScoped初始化bean中的attribut,但它不起作用

TemplateStructureAttache.xhtml @40,139 value="#{structureBean.structureAttache.intituleStructure}": Target Unreachable, 'structureAttache' returned null 

,當我使用的方法initStruc創建一個新的structureAttache然後我把它在我的第一個AJAX的聽衆,我成功的創建structureAttache但是當我第二次做,好像此值已退出的DB和它拒絕請幫我解決這個問題

/* 
* To change this license header, choose License Headers in Project Properties. 
* To change this template file, choose Tools | Templates 
* and open the template in the editor. 
*/ 
package com.dresen.dresen.Beans; 

import com.dresen.dresen.ServiceInterface.IArrondissementService; 
import com.dresen.dresen.ServiceInterface.IStructureService; 
import com.dresen.dresen.entities.Arrondissement; 
import com.dresen.dresen.entities.StructureAttache; 
import com.dresen.dresen.entities.CategorieStructure; 
import java.util.List; 
import javax.faces.bean.ManagedBean; 
import javax.faces.bean.ManagedProperty; 
import com.dresen.dresen.ServiceInterface.ICategorieStructureService; 
import com.dresen.dresen.ServiceInterface.IDepartementService; 
import com.dresen.dresen.entities.Departement; 
import java.io.Serializable; 
import javax.annotation.PostConstruct; 
import javax.faces.bean.ViewScoped; 

/** 
* 
* @author Vivien Saa 
*/ 
@ManagedBean 
@ViewScoped 
public class StructureBean implements Serializable{ 
    @ManagedProperty(value = "#{IStructureService}") 
    private IStructureService iStructureService; 

    @ManagedProperty(value = "#{IArrondissementService}") 
    private IArrondissementService iArrondissementService; 

    @ManagedProperty(value = "#{ICategorieStructureService}") 
    private ICategorieStructureService iCategorieStructureService; 

    @ManagedProperty(value ="#{IDepartementService}") 
    private IDepartementService iDepartementService; 


    private long idDepartement; 
    private long idArrondissement; 
    private long idCategorieStructure; 
    private StructureAttache structureAttache; 
    private List<Arrondissement> listArrondissement; 
    private List<Departement> listDepartement; 
    private List<CategorieStructure> listCategorieStructure; 
    private Arrondissement arrondissement = new Arrondissement(); 
    private CategorieStructure CategorieStructure = new CategorieStructure(); 



    public StructureBean() { 
     structureAttache = new StructureAttache(); 
     idDepartement = 0L; 
     idArrondissement = 0L; 
     idCategorieStructure = 0L; 
    } 

    public ICategorieStructureService getiCategorieStructureService() { 
     return iCategorieStructureService; 
    } 

    public void setiCategorieStructureService(ICategorieStructureService iCategorieStructureService) { 
     this.iCategorieStructureService = iCategorieStructureService; 
    } 

    public long getIdDepartement() { 
     return idDepartement; 
    } 

    public void setIdDepartement(long idDepartement) { 
     this.idDepartement = idDepartement; 
    } 

    public IDepartementService getiDepartementService() { 
     return iDepartementService; 
    } 

    public void setiDepartementService(IDepartementService iDepartementService) { 
     this.iDepartementService = iDepartementService; 
    } 

    public List<Departement> getListDepartement() { 
     return iDepartementService.findAllDepartement(); 
    } 

    public void setListDepartement(List<Departement> listDepartement) { 
     this.listDepartement = listDepartement; 
    } 



    public long getIdCategorieStructure() { 
     return idCategorieStructure; 
    } 

    public void setIdCategorieStructure(long idCategorieStructure) { 
     this.idCategorieStructure = idCategorieStructure; 
    } 

    public List<CategorieStructure> getListCategorieStructure() { 
     return iCategorieStructureService.findAllCategorieStructure(); 
    } 

    public void setListCategorieStructure(List<CategorieStructure> listCategorieStructure) { 
     this.listCategorieStructure = listCategorieStructure; 
    } 



    public IStructureService getiStructureService() { 
     return iStructureService; 
    } 

    public void setiStructureService(IStructureService iStructureService) { 
     this.iStructureService = iStructureService; 
    } 

    public IArrondissementService getiArrondissementService() { 
     return iArrondissementService; 
    } 

    public void setiArrondissementService(IArrondissementService iArrondissementService) { 
     this.iArrondissementService = iArrondissementService; 
    } 

    public long getIdArrondissement() { 
     return idArrondissement; 
    } 

    public void setIdArrondissement(long idArrondissement) { 
     this.idArrondissement = idArrondissement; 
    } 

    public StructureAttache getStructureAttache() { 
     return structureAttache; 
    } 

    public void setStructureAttache(StructureAttache structureAttache) { 
     this.structureAttache = structureAttache; 
    } 

    public List<Arrondissement> getListArrondissement() { 
     return iArrondissementService.findArrondissementByIdDepart(idDepartement); 
    } 

    public void setListArrondissement(List<Arrondissement> listArrondissement) { 
     this.listArrondissement = listArrondissement; 
    } 

    public Arrondissement getArrondissement() { 
     return arrondissement; 
    } 

    public void setArrondissement(Arrondissement arrondissement) { 
     this.arrondissement = arrondissement; 
    } 

    public CategorieStructure getCategorieStructure() { 
     return CategorieStructure; 
    } 

    public void setCategorieStructure(CategorieStructure CategorieStructure) { 
     this.CategorieStructure = CategorieStructure; 
    } 
    public void initStruc() { 
     structureAttache = new StructureAttache(); 
    } 

    public StructureAttache createStructure(){ 
     System.out.println("vvsssssssssvsssssssssssssssssssssssvv why don't you work"); 
     arrondissement = iArrondissementService.findArrondissementById(idArrondissement); 
     CategorieStructure = iCategorieStructureService.findCategorieStructureById(idCategorieStructure); 
     structureAttache.setCategorieStructure(CategorieStructure); 
     structureAttache.setArrondissement(arrondissement); 
     return iStructureService.createStructureAttache(structureAttache); 
    } 
    public StructureAttache findStructureById(){ 
     return iStructureService.findStructureAttacheById(structureAttache.getId()); 
    } 
    public StructureAttache updateStructure(){ 
     arrondissement = iArrondissementService.findArrondissementById(idArrondissement); 
     CategorieStructure = iCategorieStructureService.findCategorieStructureById(idCategorieStructure); 
     structureAttache.setCategorieStructure(CategorieStructure); 
     structureAttache.setArrondissement(arrondissement); 
     return iStructureService.updateStructureAttache(structureAttache); 
    } 
    public List<StructureAttache> findAllStructure(){ 
     return iStructureService.findAllStructureAttache(); 
    } 
} 

<?xml version="1.0" encoding="UTF-8"?> 
<!-- 
To change this license header, choose License Headers in Project Properties. 
To change this template file, choose Tools | Templates 
and open the template in the editor. 
--> 
<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml" 
     xmlns:h="http://java.sun.com/jsf/html" 
     xmlns:f="http://java.sun.com/jsf/core" 
     xmlns:p="http://primefaces.org/ui" 
     xmlns:ui="http://java.sun.com/jsf/facelets"> 
    <h:head> 
     <title>Application de gestion du personnel des services déconcentrés du MINESEC EXTREME NORD</title> 
     <meta name="viewport" content="width=device-width, initial-scale=1.0"/> 
    </h:head> 
    <h:body> 
     <div id="menu"> 
      <ui:include src="Menu.xhtml"/> 
     </div> 
     <f:view> 
      <p:dialog widgetVar="dlg" header=" Enregistrer une nouvel nouvelle Structure d'attache " hideEffect="explode" showEffect="explode" modal="true"> 
       <h:form id="formAjouter" > 
        <p:panelGrid id="panelAjouter" columns="2"> 
           <p:outputLabel value="Département:" />  
           <p:selectOneMenu id="depart" value="#{structureBean.idDepartement}" label="programme" filter="true" filterMatchMode="startsWith" panelStyle="width:220px"> 
            <p:ajax event="change" update="arrond" /> 
            <f:selectItem itemLabel="Selectioner le département" itemValue="" noSelectionOption="true" /> 
            <f:selectItems var="custe1" value="#{structureBean.listDepartement}" itemLabel="#{custe1.intituleDepartement}" itemValue="#{custe1.id}" itemLabelEscaped="true" /> 
           </p:selectOneMenu> 
           <p:outputLabel value="Arrondissement:" />  
           <p:selectOneMenu id="arrond" value="#{structureBean.idArrondissement}" filter="true" filterMatchMode="startsWith" panelStyle="width:220px"> 
            <f:selectItems var="custe2" value="#{structureBean.listArrondissement}" itemLabel="#{custe2.intituleArrondissement}" itemValue="#{custe2.id}" itemLabelEscaped="true" /> 
           </p:selectOneMenu> 
           <p:outputLabel value="Categorie de Structure:" />  
           <p:selectOneMenu value="#{structureBean.idCategorieStructure}" filter="true" filterMatchMode="startsWith" panelStyle="width:220px"> 
            <f:selectItems var="custe3" value="#{structureBean.listCategorieStructure}" itemLabel="#{custe3.intituleCategorieStructure}" itemValue="#{custe3.id}" itemLabelEscaped="true" /> 
           </p:selectOneMenu> 
           <p:outputLabel value="Intitule :" for="intitule" /> 
           <p:inputText id="intitule" value="#{structureBean.structureAttache.intituleStructure}" title="intitulé" /> 
           <p:outputLabel value="Code/Abréviation :" for="abrev" /> 
           <p:inputText id="abrev" value="#{structureBean.structureAttache.codeStructure}" title="abrev"/> 
           <p:commandButton value="Enregistrer" action="#{structureBean.createStructure()}" oncomplete="PF('dlg').hide()" update=":tableForm:table" id="bout1" ajax="false" /> 
        </p:panelGrid> 


       </h:form> 
      </p:dialog> 
      <p:dialog widgetVar="dl" header=" Modifier une structure d'attache" hideEffect="fold" showEffect="explode" resizable="true"> 
       <h:form id="formModifier" enctype="multipart/form-data">     
        <p:panelGrid id="panelGModifier" columns="2"> 
           <p:outputLabel value="Département:" />  
           <p:selectOneMenu id="depart" value="#{structureBean.idDepartement}" label="programme" filter="true" filterMatchMode="startsWith" panelStyle="width:220px"> 
            <p:ajax event="change" update="arrond" /> 
            <f:selectItem itemLabel="Selectioner le département" itemValue="" noSelectionOption="true" /> 
            <f:selectItems var="custe1" value="#{structureBean.listDepartement}" itemLabel="#{custe1.intituleDepartement}" itemValue="#{custe1.id}" itemLabelEscaped="true" /> 
           </p:selectOneMenu> 
           <p:outputLabel value="Arrondissement:" />  
           <p:selectOneMenu id="arrond" value="#{structureBean.idArrondissement}" filter="true" filterMatchMode="startsWith" panelStyle="width:220px"> 
            <f:selectItems var="custe2" value="#{structureBean.listArrondissement}" itemLabel="#{custe2.intituleArrondissement}" itemValue="#{custe2.id}" itemLabelEscaped="true" /> 
           </p:selectOneMenu> 
           <p:outputLabel value="Categorie de Structure:" />  
           <p:selectOneMenu value="#{structureBean.idCategorieStructure}" filter="true" filterMatchMode="startsWith" panelStyle="width:220px"> 
            <f:selectItems var="custe3" value="#{structureBean.listCategorieStructure}" itemLabel="#{custe3.intituleCategorieStructure}" itemValue="#{custe3.id}" itemLabelEscaped="true" /> 
           </p:selectOneMenu> 
           <p:outputLabel value="Intitule :" for="intitule" /> 
           <p:inputText id="intitule" value="#{structureBean.structureAttache.intituleStructure}" title="intitulé" /> 
           <p:outputLabel value="Code/Abréviation :" for="abrev" /> 
           <p:inputText id="abrev" value="#{structureBean.structureAttache.codeStructure}" title="abrev"/> 
           <h:inputHidden id="number" value="#{structureBean.structureAttache.id}" /> 
           <p:commandButton value="Modifier" action="#{structureBean.updateStructure()}" oncomplete="PF('dl').hide()" update=":tableForm:table" id="bout1" ajax="false" /> 
        </p:panelGrid> 
       </h:form> 
      </p:dialog> 
     </f:view> 


     <f:view> 
      <h:form id='tableForm'> 

       <p:dataTable value="#{structureBean.findAllStructure()}" var="item" paginator="true" rows="10" paginatorTemplate=" {CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown} " id="table" rowsPerPageTemplate="5,10,15" selectionMode="single" selection="#{structureBean.structureAttache}" rowKey="#{item.id}"> 
          <f:facet name="header"> 
           La liste des Structures d'attache 
          </f:facet> 

          <p:column> 
           <f:facet name="header"> 
            <h:outputText value="Structure"/> 
           </f:facet> 
           <h:outputText value="#{item.intituleStructure}"/> 
          </p:column> 
          <p:column> 
           <f:facet name="header"> 
            <h:outputText value="Code/Abréviation Structure"/> 
           </f:facet> 
           <h:outputText value="#{item.codeStructure}"/> 
          </p:column> 

          <p:column> 
           <f:facet name="header"> 
            <h:outputText value="Arrondissement"/> 
           </f:facet> 
           <h:outputText value="#{item.arrondissement.intituleArrondissement}"/> 
          </p:column> 

          <p:column> 
           <f:facet name="header"> 
            <h:outputText value="Département"/> 
           </f:facet> 
           <h:outputText value="#{item.arrondissement.departement.intituleDepartement}"/> 
          </p:column> 


       </p:dataTable> 
       <p:toolbar> 
        <f:facet name="left"> 
         <p:commandButton type="push" onclick="PF('dlg').show();" value="Nouvelle Structure" icon="ui-icon-disk"> 
          <p:ajax update=":formAjouter:panelAjouter" resetValues="true" /> 
         </p:commandButton> 
         <p:commandButton onclick="PF('dl').show()" value="Modifier Structure" update=":formModifier:panelGModifier" icon="ui-icon-arrowrefresh-1-w"/> 

         <span class="ui-separator"> 
          <span class="ui-icon ui-icon-grip-dotted-vertical" /> 
         </span> 
         <p:commandButton type="push" title="Save" image="ui-icon-disk" /> 
         <p:commandButton type="push" title="Update" icon="ui-icon-arrowrefresh-1-w"/> 
         <p:commandButton type="push" title="Print" image="ui-icon-print"/> 
        </f:facet> 
       </p:toolbar> 
      </h:form> 
     </f:view> 
    </h:body> 
</html> 

回答

0

您可以使用方法初始化您的屬性,然後通過AJAX或actionListener調用將在嘗試使用該屬性之前完成該工作的方法。

相關問題