Je souhaite avoir une méthode commune annotée @ModelAttribute dans une classe abstraite mais avec une valeur provenant de sous-classes. L'objectif final est de récupérer la valeur d'une variable dans JSP. La valeur est différente dans chaque contrôleur de sous-classe, mais je ne souhaite pas dupliquer la méthode @ModelAttribute.ModelAttribute dans la classe abstract avec la valeur de la sous-classe
La classe abstraite
public abstract class BaseController {
protected String PATH = "";
public void setPATH(String inPath) {
PATH = inPath;
}
@PostConstruct
private void init() {
setPATH(PATH);
}
@ModelAttribute("controllerPath")
public String getControllerPath() {
return PATH;
}
}
Le sublass, un contrôleur
@Controller
@RequestMapping(OneController.PATH)
public class OneController extends BaseController {
protected static final String PATH = "/one";
public OneController() {
setPATH(PATH);
}
}
JSP
Value for controllerPath: ${controllerPath}
La valeur de $ {} controllerPath est toujours vide avec la version Spring 4.0.9 .RELEASE mais fonctionne (la valeur est définie avec la valeur du contrôleur de sous-classe) avec Spring version 3.1.2.RELEASE. Comment mettre à jour mon code pour fonctionner avec Spring 4?
Pourquoi vous appelez 'setPath' à nouveau de méthode' @ PostConstruct'? Vous l'appelez du constructeur ... –
Vous avez raison. Ce n'est pas nécessaire. – BasicCoder