有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何将jsp中的表单值连接到SpringMVC中的控制器

我是spring MVC的新手。我想将一个模型bean附加到一个绑定值并将其传递给控制器的表单。所以我就这样做了

在jsp中

<form:form modelattribute="model">
<form:input path="var1"/>
</form:form>

内部控制器

pulic void method(@modelattribute("model")Bean bean)
{

//my code
}

但是,当我访问表单时,它在呈现jsp时抛出异常错误,因此不存在名为model的bean

如何解决这个问题?帮帮我


共 (5) 个答案

  1. # 1 楼答案

    您需要在呈现页面之前保存模型

    uiModel.addAttribute("model", new Bean());
    
  2. # 2 楼答案

    假设您的模型类如下所示:

    public class MyModel{
        private String propOne;
        private String porpTwo;
    
        /*Skipping getters and setters*/
    }
    

    使用@modeldattribute将用户输入映射到表单bean:

    @RequestParam("/myPage")
    public String myController(@ModelAttribute MyModel myModel){
        /*Do your processing here*/
    }
    

    jsp页面上,只需为输入字段指定与要映射的bean中的属性相同的名称(Html属性:name):

    <form:input name="propOne" class="xyz" />
    <form:input name="propTwo" class="xyz" />
    

    这样做就完成了bean映射

  3. # 3 楼答案

    在SpringMVC中,最好在控制器中提供模型的方法上使用@ModelAttribute注释。在呈现JSP之前,它将被调用并自动添加到模型中

    像这样的

    @ModelAttribute
    public Model model(){
      return new Model();
    }
    

    我建议您好好阅读一下Spring MVC documentation

  4. # 4 楼答案

    请看一下Vaibhav方法,我已经对它进行了编辑,现在它可以正常工作了

  5. # 5 楼答案

    在GET请求期间,必须将表单实例添加到模型中

    @RequestMapping(value = "/foo", method = RequestMethod.GET)
    public String handler(final Model uiModel)
            uiModel.addAttribute("model", new Bean());
    

    //执行一些操作并返回一个视图路径,可能是 }

    并在处理程序方法中处理POST请求

    @RequestMapping(value = "/foo", method = RequestMethod.POST)
    public String handler(final Bean form)
            // process your form bean here and return a view path, probably
    }
    

    文档可在此处获取:http://static.springsource.org/spring/docs/3.2.x/spring-framework-reference/html/mvc.html