事情是这样的我创建了一个 BaseController。使得每个 controller都继承自BaseController。然后在BaseController中,进行一些操作。比如读取配置文件,读取用户权限等等。那么问题来了。如下代码
public class TestBaseController { @RequestMapping(value = "test2.do") public void test2() { System.out.println(222222); } @ModelAttribute("cccc") public void test5() { System.out.println("ccccc"); } @ModelAttribute() public void test6() { System.out.println("6666666"); } @ModelAttribute("aaaa") public void test3() { System.out.println("aaaaa"); } @ModelAttribute("bbbb") public void test4() { System.out.println("bbbbb"); } @ModelAttribute("acc") public PageAccessCode setReqAndRes(HttpServletRequest request, HttpServletResponse response) { System.out.println("acc"); return null; } @ModelAttribute("ctx") public String getContext(HttpServletRequest request, HttpServletResponse response) { System.out.println("ctx"); return null; } }
输出顺序:
ctxccccc6666666aaaaaaccbbbbb
他们的执行顺序到底是怎么个情况呢?网上资料,有的说顺序执行,有的说反序执行。我自己测试,发现根本没有顺序可言请问@ModelAttribute到底是什么机制呢?
然而,查找了3天3夜,测试了无数遍。
并没有什么规律可言!