使用Spring 3.1 Controller观察到奇怪的行为

时间:2014-07-01 16:01:46

标签: spring model-view-controller

我使用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?

有人可以看到这里发生了什么吗?

提前致谢。我可以提供进一步解决问题所需的其他任何东西(配置?)。

0 个答案:

没有答案