我使用Spring 3.1和tile来开发MVC应用程序。
我有一个JSP页面(header.jsp)和2个控制器(HomeController和SignupController)。
header.jsp是这样的:
<s:url var="login_url" value="${loginUrl}" />
<s:url var="signup_url" value="${signUpFormUrl}" />
<a class="btn btn-primary" href="${login_url}">Login</a>
<a class="btn btn-default" href="${signup_url}">Signup</a>
HomeController.java是这样的(/ login / form URL配置为spring security作为登录页面使用):
@Controller
public class HomeController {
@RequestMapping({"/", "/home"})
public String showHomePage(final Map<String, Object> model) {
return "home";
}
@ModelAttribute("loginUrl")
public String getLoginUrl() {
return "/login/form";
}
......
}
SignupController.java是这样的:
@Controller
public class SignupController {
.....
@RequestMapping(value = "/signup/form")
public String signup(@ModelAttribute SignupForm signupForm) {
return "signup/form";
}
@ModelAttribute("signUpFormUrl")
public String getSignUpFormUrl() {
return "/signup/form";
}
.....
}
奇怪的是,就像上面提到的那样,我在呈现页面时得到了这个结果:
<a class="btn btn-primary" href="/appContext/login/form">Login</a>
<a class="btn btn-default" href="">Signup</a>
所以结果是空的href值。
但当我将关于注册(RequestMapping和ModelAttribute方法)的注册控制器代码移动到家庭控制器时,它按预期工作:
<a class="btn btn-primary" href="/appContext/login/form">Login</a>
<a class="btn btn-default" href="/appContext/signup/form">Signup</a>
是否可以在同一视图中使用来自不同Controller的RequestMapping?
有人可以看到这里发生了什么吗?
提前致谢。我可以提供进一步解决问题所需的其他任何东西(配置?)。