public void render(IAction action, IContext context, Router router) throws Exception {
		
		JsonExtractor extractor = new JsonExtractor();
	    ArrayList<String> layoutDependencies = 
	            extractor.getDependencies(context.getRequest().getSession().getServletContext().getRealPath("/") + context.getProperties().getProperty("layout.path")+ "/" + action.getLayout()+".json");
		// Chargement du fichier JSON de la liste des dépendence au niveau des variable.
		//String[] layoutDependencies = {"__CURRENT__","shared/main_header","shared/main_footer"};
		
		//Template Racine de la vue
		String mainTemplateName = layoutDependencies.get(layoutDependencies.size()-1);
		layoutDependencies.remove(layoutDependencies.size()-1);
		
		//Parcours des dépendance et chargement des template
		for (String layoutDependence : layoutDependencies) {
			IAction a;
			if(layoutDependence.equals("__CURRENT__")){
				a = action;
			}else{
				a = router.find(layoutDependence, context);
			}
			
			if (a!=null) {
				a.execute(context);
			}
			
			//Vérification de l'exitense du template et retour de celui-ci
			String templateFile = this.checkTemplateFile(layoutDependence, action, context);
			
			//Liaison des variable des template avec celle du context. Exemple $title de filelist.vm et title de FIleList.java
			if(templateFile!=null){
				Template actionTemplate = Velocity.getTemplate(templateFile);
				StringWriter renderedTemplate = new StringWriter();
				actionTemplate.merge(context.getVelocityContext(), renderedTemplate);
				context.setFragment(layoutDependence, renderedTemplate);
					
			}	
		}
		
		//Impression à l'écran de la vue racine (ici shared/html) 
		String templateFile = this.checkTemplateFile(mainTemplateName, action, context);
		
		if(templateFile != null){
			Template actionTemplate = Velocity.getTemplate(templateFile);
			
			actionTemplate.merge(context.getVelocityContext(), context.getResponse().getWriter());
		}
	}