cancel
Showing results for 
Search instead for 
Did you mean: 

comment faire un foward sur un dialog?

faxeur1986_6249
Champ in-the-making
Champ in-the-making
Bonjour,

je travaille sur un projet. Je suis tombé face à un problème de forward sur un dialog;
je sais qu'il est possible de faire un forward sur une JSP
<jsp:forward page="/main.jsp" />
.

Mais, mois je voudrais faire un forward sur un dialog.
Sinon comment provoquer l'affichage d'un dialog à partir du code Java.

Merci,
1 REPLY 1

rivarola
Champ on-the-rise
Champ on-the-rise
Bonjour,

En Java il faut s'intéresser à la classe AlfrescoNavigationHandler (qui étend le NavigationHandler par défaut de JSF) et en particulier à sa méthode handleNavigation.
Il y a une chance que ça marche en lui passant "dialog:maDialog" dans le paramètre "outcome".

Si on a besoin de passer ç la dialog des paramètres spécifiques, ça devient plus compliqué. En code Java dans une classe héritant de AlfrescoNavigationHandler ça donne quelque chose comme :
  public boolean initializeDialog(FacesContext context, String name, String view_id, Map<String, String> parameters) {
    DialogConfig config = getDialogConfig(context, name, getDispatchContextNode(context));
    if (config != null) {
      if (logger.isDebugEnabled()) {
        logger.debug("Found config for dialog '" + name + "': " + config);
      }
      try {
        // set the dialog manager up with the retrieved config
        DialogManager dialogManager = Application.getDialogManager();
        if (parameters != null && parameters.size() > 0) { // FIX mixing of dialog and command frameworks cause problem of initialization priority
          dialogManager.setupParameters(parameters);
        }
        dialogManager.setCurrentDialog(config);

        Stack viewStack = (Stack) context.getExternalContext().getSessionMap().get("_alfViewStack");
        if (viewStack == null) {
          viewStack = new Stack();
          context.getExternalContext().getSessionMap().put("_alfViewStack", viewStack);
        }
        viewStack.clear();
        viewStack.push("/jsp/dialog/container.jsp");
      }
      catch (RuntimeException ex) {
        ex.printStackTrace();
        return false;
      }

    // inform any listeners that the current layout may has changed
    UIContextService.getInstance(context).areaChanged();

      return true;
    }
    else {
      logger.warn("Could not find dialog " + name);
    }

    return false;
  }

puis si cette un appel à cette méthode retourne true on peut se lancer dans une navigation comme :

      ViewHandler viewHandler = context.getApplication().getViewHandler();
      UIViewRoot viewRoot = viewHandler.createView(context, "/jsp/dialog/container.jsp");
      viewRoot.setViewId("/jsp/dialog/container.jsp");
      context.setViewRoot(viewRoot);
      context.renderResponse();

Il y a peu de chances que ce code fonctionne directement, mais ça donne une idée de ce qu'il faut faire pour rester cohérent avec la navigation Alfresco.

Sinon depuis un JSP il y a peut-être moyen d'appeler une URL dont la structure est décrite dans cette page : http://wiki.alfresco.com/wiki/URL_Addressability#ExternalAccessServlet

Dans tous les cas, bonne chance !
Getting started

Tags


Find what you came for

We want to make your experience in Hyland Connect as valuable as possible, so we put together some helpful links.