IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Struts 1 Java Discussion :

[Struts 1.2.9 + Tiles] charger dynamiques des bouts de tiles-defs.xml au démarrage


Sujet :

Struts 1 Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2005
    Messages : 14
    Points : 12
    Points
    12
    Par défaut [Struts 1.2.9 + Tiles] charger dynamiques des bouts de tiles-defs.xml au démarrage
    Bonjour,

    je chercher à charger dynamiques des bouts de tiles-defs.xml au démarrage de l'application.

    je me heurte à de nbx problèmes, en particulier la possibilité de modifier le PlugInConfig : il est gelé ("frozen"), cf la variable "configured" de PlugInConfig de tiles qui est passée à true à l'init.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Configuration is frozen
    java.lang.IllegalStateException: Configuration is frozen
    	at org.apache.struts.config.PlugInConfig.addProperty(PlugInConfig.java:87)
    notre RequestProcessor a été redéfinit et hérite du TilesRequestProcessor : cela implique qu'on ne peut pas enlever la déclaration du pluggin tiles dans le struts config, sinon exception :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <plug-in className="org.apache.struts.tiles.TilesPlugin">
        <set-property property="definitions-config" value="/WEB-INF/config/tiles-defs.xml" />
        <set-property property="moduleAware" value="true" />
    </plug-in>
    le but est d'ajouter un fichier tiles-def au fichier déjà déclaré dans le struts-config :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
        private void chargeTilesPriv(ActionMapping theMapping)
        {
            PlugInConfig[] tabConfig = theMapping.getModuleConfig().findPlugInConfigs();
            for (int i = 0; i < tabConfig.length; i++)
            {
                PlugInConfig config = tabConfig[i];
                if (config.getClassName().equals("org.apache.struts.tiles.TilesPlugin"))
                {
                    try
                    {
                        unfreeze(config);
                    } catch (Exception e)
                    {
                        LOGGER.error(e);
                        LOGGER.error("Impossible de modifier le param configured de PlugInConfig");
                    }
                    config.addProperty(DEFINITIONS_CONFIG, TILES_DEFS_PRIV);
                    config.freeze();
                }
            }
        }
    je suis assez mauvais en Reflexion, et je voulais modifier directement la variable configured de la sorte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    private void unfreeze(PlugInConfig theConfig) throws Exception
    {
        Field field = theConfig.getClass().getDeclaredField("configured");
        field.setAccessible(true);
        field.setBoolean(theConfig, true);
    }
    ce n'est pas jojo, et surtout, ca ne marche pas, car c'est le addProperty qui lance l'exception frozen.

    une idée ?

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2005
    Messages : 14
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par ummon99
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    private void unfreeze(PlugInConfig theConfig) throws Exception
    {
        Field field = theConfig.getClass().getDeclaredField("configured");
        field.setAccessible(true);
        field.setBoolean(theConfig, true);
    }
    ce n'est pas jojo, et surtout, ca ne marche pas, car c'est le addProperty qui lance l'exception frozen.

    une idée ?
    effectivement, si je force à true qqch qui est déjà à true, il ne sera jamais false.

    il faut évidement écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        field.setBoolean(theConfig, false);
    du coup, j'ai une exception tiles (preuve que mon idée n'est pas mauvaise) que je ne comprends pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Path monPath does not start with a "/" character

Discussions similaires

  1. Réponses: 0
    Dernier message: 25/02/2013, 12h36
  2. Charger dynamiquement des Classes
    Par Rafoudiablol dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 31/05/2012, 19h24
  3. Charger dynamiquement des graphiques XAML
    Par Jayme65 dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 29/02/2012, 04h28
  4. Comment charger dynamiquement des fichier XAML ?
    Par AliJava dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 09/10/2009, 17h45
  5. [FLASH 8] Charger dynamiquement des bmp depuis une url
    Par matN59 dans le forum Intégration
    Réponses: 1
    Dernier message: 24/04/2006, 16h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo