2012-07-13 2 views
0

J'ai une question à propos de JSF 1.2 + Richfaces 3.3. J'ai une application web qui a quelques règles de navigation et quelques fonctions ajax. À un certain point, je veux que l'application fasse pour ouvrir un nouvel onglet dans le navigateur et montrer une page xhtml, après avoir fait une action du côté du serveur. J'ai choisi l'étiquette pour cela. Voilà comment il ressemble:JSF 1 imbrique une nouvelle page dans mon xhtml principal

<h:commandLink target="_blank" 
       action="#{sm_gestiondocumental_gestorUserAuditBean.actionCreateUserAuditManager}"> 
       <h:graphicImage value="/images/sm_gestiondocumental/checklist.png" 
        alt="#{wmsg.VIEW_AUDITS}" title="#{wmsg.VIEW_AUDITS}" 
        styleClass="pic" /> 
      </h:commandLink> 

Le code qui est en cours d'exécution est le suivant:

private String createAuditManager(String className, String param, Object objectToAudit, 
     String auditFileName) { 
    AuditManagerBean amb = (AuditManagerBean) FacesUtils 
      .getManagedBean(BeanNames.AUDIT_MANAGER_BEAN); 
    if (amb == null) { 
     amb = new AuditManagerBean(); 
    } 
    try { 
     amb.set_serviceLocator(this.get_serviceLocator()); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    amb.set_AuditClassName(className); 

    amb.set_AuditId(param); 
    amb.set_AuditList(null); 
    amb.set_AuditFileName(auditFileName); 
    amb.set_ObjectToAudit(objectToAudit); 

    amb.set_AuditFilterInit(this._FilterInit); 
    amb.set_AuditFilterEnd(this._FilterEnd); 
    FacesUtils.setManagedBeanInSession(BeanNames.AUDIT_MANAGER_BEAN, amb); 
    return "showAudits"; 
} 

public String actionCreateUserAuditManager() { 
    if (this._SelectedUser == null) { 
     FacesUtils.addErrorMessage("Error al listar usuarios"); 
     return this.createAuditManager(CUsuarioRegistrado.NAME_FOR_AUDIT, "", null, 
       "Auditoría para " + this._SelectedUser); 
    } 
    return this.createAuditManager(CUsuarioRegistrado.NAME_FOR_AUDIT, 
      this._SelectedUser.toString(), null, "Auditoría para " + this._SelectedUser); 
} 

qui retourne une chaîne "showAudits". Selon mes règles de navigation, cette chaîne doit ouvrir ce lien: auditInfo.xhtml.

<navigation-rule> 
    <from-view-id>*</from-view-id> 
    <navigation-case> 
     <description></description> 
     <from-outcome>sm_gestiondocumental_ListGrupoEntrega</from-outcome> 
     <to-view-id>/modules/sm_gestiondocumental/ges_tiposentrega/tiposGrupoList.xhtml</to-view-id> 
    </navigation-case> 
    <navigation-case> 
     <description></description> 
     <from-outcome>sm_gestiondocumental_ListEmpresa</from-outcome> 
     <to-view-id>/modules/sm_gestiondocumental/ges_empresas/empresasList.xhtml</to-view-id> 
    </navigation-case> 
    <navigation-case> 
     <description></description> 
     <from-outcome>sm_gestiondocumental_ListTrabajo</from-outcome> 
     <to-view-id>/modules/sm_gestiondocumental/ges_trabajos/trabajosList.xhtml</to-view-id> 
    </navigation-case> 
    <navigation-case> 
     <description></description> 
     <from-outcome>sm_gestiondocumental_ListSeccion</from-outcome> 
     <to-view-id>/modules/sm_gestiondocumental/ges_secciones/seccionesList.xhtml</to-view-id> 
    </navigation-case> 
    <navigation-case> 
     <description> 
     </description> 
     <from-outcome>showAudits</from-outcome> 
     <to-view-id>/modules/sm_gestiondocumental/auditInfo/auditInfo.xhtml</to-view-id> 
    </navigation-case> 
</navigation-rule> 

Les règles sont bien appliquées, cependant, la page ouvre dans le panneau principal de ma demande, je veux dire, un nouvel onglet du navigateur est ouvert, mais l'ensemble de l'application est affichée avec le contenu auditInfo.xhtml intérieur , afin d'afficher uniquement la page auditInfo.xhtml.

Cela semble être un problème de filtrage, car la méthode setContent() de mon application bean est appelée après org.ajax4jsf.Filter invoqué. Cependant, je ne veux pas que cette méthode soit appelée. Des idées?

Répondre

0

Résolu. La balise était à l'intérieur d'un a4j: outputPanel, donc même si elle n'était pas automatiquement ajaxRender, richfaces utilisait le filtre ajax pour cette requête. Ce filtre causait ce problème. Changer le a4j: outputPanel pour un h: panelGroup l'a résolu.

Questions connexes