抽象クラスで@ModelAttributeという名前の共通メソッドを持ちたいが、サブクラスから値を取得したい。最終的な目標は、JSPで変数の値を取得することです。値は各サブクラスコントローラで異なりますが、@ModelAttributeメソッドを複製したくありません。サブクラスの値を持つ抽象クラスのModelAttribute
抽象クラス
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;
}
}
sublass、コントローラ
@Controller
@RequestMapping(OneController.PATH)
public class OneController extends BaseController {
protected static final String PATH = "/one";
public OneController() {
setPATH(PATH);
}
}
JSP
Value for controllerPath: ${controllerPath}
$ {controllerPath}の値は、常にスプリングバージョン4.0.9と空であります.RELEASEしかし、Springバージョン3.1.2.RELEASEで動作します(値はサブクラスコントローラからの値で設定されます)。 Spring 4で動作するようにコードを更新するにはどうすればよいですか?
なぜあなたが呼び出している 'setPath'再び' @ PostConstruct'方法から?あなたはコンストラクタからそれを呼び出しています... –
そうです。それは必要はありません。 – BasicCoder