2011-08-17 6 views
0

J'ai essayé d'alterner les pages en utilisant ui:include sur le clic des treenodes ajax (PrimeFaces). La première page qui charge par défaut se charge correctement avec tous les composants actifs mais lorsque je clique sur l'autre todeode pour afficher une autre page, la dernière page se charge anormalement comme si la boîte de dialogue était visible ci-dessous et la page mains.L'arbre Ajax ne charge pas la page

Je me sens si je peux forcer la page à recharger partiellement par défaut sur nodeSelect

index.jsf (il se charge lors de la connexion)

<p:layoutUnit position="west" size="270" header="Menu" collapsible="false" resizable="true"> 
    <p:ajaxStatus style="width:16px;height:16px;"> 
     <f:facet name="start"> 
      <h:graphicImage value="../design/ajaxloading.gif"/> 
     </f:facet> 
     <f:facet name="complete"> 
      <h:outputText value=""/> 
     </f:facet> 
    </p:ajaxStatus> 
    <h:form id="appsMainControl"> 
     <ui:include src="/ui/appServices.jsf"/> 
    </h:form> 
</p:layoutUnit> 
<p:layoutUnit position="center"> 
    <h:form id="centerControl">      
     <ui:include src="/ui/#{amb.appToGet}.jsf"/>     
    </h:form> 
</p:layoutUnit> 

Le composant treeview avec l'action de l'auditeur. Lors de la sélection de noeud Je veux la page d'enfant à charge appropriée

<p:layoutUnit position="west" size="270" header="Menu" collapsible="false" resizable="true"> 
    <p:ajaxStatus style="width:16px;height:16px;"> 
     <f:facet name="start"> 
      <h:graphicImage value="../design/ajaxloading.gif"/> 
     </f:facet> 
     <f:facet name="complete"> 
      <h:outputText value=""/> 
     </f:facet> 
    </p:ajaxStatus> 
    <h:form id="appsMainControl"> 
     <ui:include src="/ui/appServices.jsf"/> 
    </h:form> 
</p:layoutUnit> 
<p:layoutUnit position="center"> 
    <h:form id="centerControl">      
     <ui:include src="/ui/#{amb.appToGet}.jsf"/>     
    </h:form> 
</p:layoutUnit> 

Le backing bean:

public void onNodeSelect(NodeSelectEvent event) throws Exception { 
    ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext(); 

    try { 
     appToGet = appsMainDAO.appToGet(event.getTreeNode().toString()); 
     // ec.redirect("index.jsf"); 
     // System.out.println("Got "+appToGet); 
     // appSubList = appsMainDAO.appsSubServicesList(appToGet, "Forms"); 
    } catch (Exception ex) { 
     ex.printStackTrace(); 
     Logger.getLogger(appsMainBean.class.getName()).log(Level.SEVERE, null, ex); 
    } finally { 

    } 

} 

Répondre

2

Ne fais pas ça. Vous frottez JSF dans le mauvais sens et vous vous retrouvez ainsi dans une catastrophe majeure.

Il est impossible d'expliquer le cycle de vie complet ici, mais - jusqu'à ce que vous connaissiez votre chemin autour de JSF - supposons simplement que les pages facettes sont _not_supposed_ pour fonctionner comme des pages HTML. Au lieu de cela, ils devraient fonctionner comme des applications fenêtre, où vous avez un certain nombre de widgets qui n'apparaissent pas ou disparaissent - ils peuvent être placés dans des onglets, ils peuvent être désactivés, mais ils restent là où ils étaient depuis le début.

S'il y a un nombre fini de choses à inclure, l'option la plus simple est de les inclure toutes et d'ajouter un rendu = "# {gui.current == 'component1'}", donc seul l'un des composants est visible .

+0

Merci dreger. je pense que tu as raison. même si en même temps j'ai l'impression que la mise en œuvre sur une seule page nuit à la performance car toutes les pages seront chargées en même temps et seulement celle qui restitue les pages. Je l'ai fait fonctionner en ajoutant les balises html et body manquantes au modèle de composition de l'interface utilisateur. J'ai supposé que l'index.jsf rechargera tous les composants par défaut. Merci beaucoup. – Damilola

+0

@Damilola: Eh bien, vous comprenez les implications de ce que vous avez fait (concernant le cycle de vie des haricots, la navigation, etc.), alors bien sûr, allez-y. BTW: faire confiance à vos sentiments ne doit pas être le meilleur moyen d'optimiser les applications (même si cela peut certainement fonctionner). – fdreger