Ich möchte eine gemeinsame Methode @ModelAttribute in einer abstrakten Klasse aber mit Wert von Unterklassen annotiert haben. Das endgültige Ziel besteht darin, den Wert einer Variablen in JSP abzurufen. Der Wert ist in jedem Unterklassen-Controller unterschiedlich, aber ich möchte die @ModelAttribute-Methode nicht duplizieren.ModelAttribute in abstrakten Klasse mit Wert aus der Unterklasse
Die abstrakte Klasse
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;
}
}
Die sublass, ein Controller
@Controller
@RequestMapping(OneController.PATH)
public class OneController extends BaseController {
protected static final String PATH = "/one";
public OneController() {
setPATH(PATH);
}
}
JSP
Value for controllerPath: ${controllerPath}
Der Wert von $ {} controllerPath 4.0.9 mit Frühling Version immer leer ist .RELEASE funktioniert aber mit der Spring-Version 3.1.2.RELEASE (der Wert wird mit dem Wert vom Unterklassen-Controller gesetzt). Wie aktualisiere ich meinen Code, um mit Spring 4 zu arbeiten?
Warum Sie anrufen 'setPath' wieder von' @ PostConstruct' Methode? Sie rufen es vom Konstruktor ... –
Sie richtig. Es ist nicht nötig. – BasicCoder