Spring framework

De Raccourcis

Redirection

Garder les paramètres

Une solution pour rediriger vers une autres adresses avec les mêmes paramètres.

@RequestMapping(value ="mon_url_cible")
public String cegDefaultMethod(@RequestParam Map<String, String> allRequestParams, RedirectAttributes redirectAttrs) {
	redirectAttrs.addAllAttributes(allRequestParams);
	return "redirect:mon_url_de_redirection";
}

Plan de site

En se basant sur les annotations

Générer une liste d'adresses en se basant les RequestMapping (classes et méthodes).

@Component
public class SiteMap implements ApplicationContextAware, InitializingBean {
 
	private ApplicationContext context;
 
	private static List<String> urlList = new ArrayList<String>();
 
	public void setApplicationContext(ApplicationContext applicationContext) {
		this.context = applicationContext;
	}
 
	public void afterPropertiesSet() throws Exception {
		Assert.notNull(context, "applicationContext not set");
 
		Map<String, Object> controllers = context.getBeansWithAnnotation(Controller.class);
		for (Map.Entry<String, Object> entry : controllers.entrySet()) {
 
			Object controllerClass = entry.getValue();
 
			// récupère le RequestMapping de la classe
			RequestMapping requestMappingClass = controllerClass.getClass().getAnnotation(RequestMapping.class);
 
			String prefixe = null;
			if (requestMappingClass != null) {
				String[] base = requestMappingClass.value();
				if (base.length > 0 ) {
					prefixe = base[0];
				}
			}
 
			for (Method method : controllerClass.getClass().getMethods()) {
 
				// récupèrer le RequestMapping de la méthode
				RequestMapping requestMapping = method.getAnnotation(RequestMapping.class);
				if (requestMapping == null)	continue;
 
				String[] values = requestMapping.value();
				RequestMethod[] methode = requestMapping.method();
 
				// Récupérer toutes les méthodes GET
				if (values.length > 0 && methode.length > 0 && methode[0].equals(RequestMethod.GET)) {
					// ajout le RequestMapping de la classe à celui de la méthode
					SiteMap.urlList.add(prefixe+values[0]);
				}
			}
		}
 
	}
 
}

Erreurs

Pour faire afficher les erreurs sous forme de liste HTML : <spring:errors path="*"> ne le permettant par défaut.

<spring:bind path="*">
	<ul class="message errorCSS">
		<c:forEach items="${status.errorMessages}" var="error">
			<li>${error}</li>
		</c:forEach>
	</ul>
</spring:bind>