[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:
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:
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:
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:
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 ?