java - 页面之间重定向 - Spring MVC

标签 java spring spring-mvc controller spring-portlet-mvc

我从 Spring Portlet MVC 开始但我相信这个问题也适用于 Spring MVC 。让我向您展示这个示例

@Controller
@RequestMapping(value="VIEW")//this maps to Portlet Mode VIEW
public class LoginController {

    @RenderMapping("action=showRegisterPage")
    //this annotation is almost the same like @RequestMapping
    public String showRegisterPage() {
        return "registration";
    }

    @ModelAttribute("loginForm")
    public LoginForm getLoginForm() {
        return new LoginForm();
    }
}

然后是注册页面的 Controller

@Controller
@RequestMapping(value="VIEW")
public class RegistrationController {

    @ModelAttribute("user")
    public User getUser() {
        return new User();
    }
}

问题是,当我从页面调用 showRegisterPage 方法(操作)时,我被重定向到registration.jsp,但会发生此异常

Caused by: java.lang.IllegalStateException: Neither BindingResult nor 
plain target object for bean name 'user' available as request attribute

可以通过输入 ModelAttribute 来修复此问题user 到 LoginController 但代码重复并不是真正正确的方法,那么我怎样才能正确解决这个问题?我也尝试将 showRegisterPage 方法移动到 RegistrationController 但链接不起作用。也许有人可以详细说明页面到某个 Controller 的绑定(bind)到底是如何工作的?

附注index.jsp 和 Registration.jsp 都包含 <form:form>标签,我还省略了两个 Controller 的样板代码。

最佳答案

由于进入注册页面模型没有用户属性而抛出异常。我猜你的注册页面包含这样的东西

<form:form commandName="user" >

这就是为什么当您将此代码粘贴到第一个 Controller 时错误消失了

@ModelAttribute("user")
public User getUser() {
    return new User();
}

此代码为模型提供用户对象。 如果您不想将一种方法复制两次,您可以

@RenderMapping("action=showRegisterPage")
//this annotation is almost the same like @RequestMapping
public String showRegisterPage(Model model) {
    model.addAttribute("user", new User());
    return "registration";
}

在这种情况下,模型将包含用户对象。

关于java - 页面之间重定向 - Spring MVC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15020588/

相关文章:

java - 定期保存/刷新/提交 - 这种模式有名称吗?

java.util.UnknownFormatConversionException :

java - 任务 ':generateContractTests' 执行失败。 Spring Cloud 合约

java - 自定义表单验证注释不起作用

java - http 出站网关 URL 中的路径参数

java - maven-compiler-plugin如何与不同的jdk一起工作?

java - Elastic Search 5 中的复杂搜索查询

java - 如何在 spring-mvc 中配置 slf4j 进行日志记录?

java - Spring security 或 BCrypt 算法哪一种适合帐户这样的项目?

jquery - Spring Controller 404在POST方法调用后返回