当前位置: 首页 > 知识库问答 >
问题:

Spring mvc:如何将表单数据从jsp传递到控制器

郏志诚
2023-03-14

假设我在jsp中有这个表单

<form action="save" method="post">
 <input type="text" name="name" value="${person.name}">
 <input type="text" name="age" value="${person.age}">
 <input type="submit" value="Save">
</form>

和Person类

public class Person {
 private String name;
 private String age;
 //getters and setters
}
public class Controller {
 @RequestMapping(value="/save")
 public ModelAndView save(Person person){
  //save person
 }
}

编辑:控制器实现

@Controller
public class PersonController {

    @Autowired
    private PersonService personService;

    @RequestMapping(value="/", method=RequestMethod.GET)
    public ModelAndView list(){
        List<PersonDto> personDtos = personService.getAllPersons();
        ModelAndView model = new ModelAndView("index");
        model.addObject("persons",personDtos);
        model.addObject("roles",personService.getRoles());
        return model;
    }

    @RequestMapping(value="view/{personId}", method = RequestMethod.POST)
    public ModelAndView view(@PathVariable String personId){
        PersonDto personDto = new PersonDto();
        if (personId != null){
            personDto = personService.getPersonById(Integer.parseInt(personId));
            ModelAndView model = new ModelAndView("person");
            model.addObject("person",personDto);
            return model;
        }
        else{
            return new ModelAndView("redirect:/?message=Please select one person");
        }
    }   


    @RequestMapping(value="/add")
    public ModelAndView add(){
        ModelAndView model = new ModelAndView("person");
        return model;
    }

    @RequestMapping(value="/update", method = RequestMethod.GET)
    public ModelAndView update(@RequestParam(value="personId",required=false) int[] personId){
        PersonDto personDto = new PersonDto();
        if (personId != null && personId.length == 1){
            personDto = personService.getPersonById(personId[0]);
            ModelAndView model = new ModelAndView("person");
            model.addObject("person",personDto);
            return model;
        }
        else{
            return new ModelAndView("redirect:/?message=Please select one person");
        }
    }

    @RequestMapping(value="/delete", method = RequestMethod.POST)
    public ModelAndView delete(@RequestParam(value="personId",required=false) int[] personId){
        if(personId != null){   
            for(int id : personId){
                personService.deletePerson(id);
            }
            return new ModelAndView("redirect:/?message=Person/s deleted");
        }else{
            return new ModelAndView("redirect:/?message=Please select person/s to delete");
        }
    }

    @RequestMapping(value="/search", method = RequestMethod.GET)
    public ModelAndView search(@RequestParam(value="firstName",required=false) String firstName,
        @RequestParam(value="middleName",required=false) String middleName,
        @RequestParam(value="lastName",required=false) String lastName,
        @RequestParam(value="roles",required=false) String roles){
        ModelAndView model = new ModelAndView("index");
        List<PersonDto> personDtos = null;
        if (lastName.isEmpty() && firstName.isEmpty() && middleName.isEmpty() && roles.isEmpty()){
            personDtos = personService.getAllPersons();
        }
        else{
            personDtos = personService.searchPerson(lastName,firstName,
            middleName,roles);
        }
        model.addObject("persons",personDtos);
        model.addObject("roles",personService.getRoles());
        return model;
    }

    @RequestMapping(value="/test",method = RequestMethod.POST)
    public ModelAndView test(PersonDto personDto){
        System.out.println(personDto);
        return new ModelAndView("redirect:/?message="+"Person saved");
    }
}

我没有问题调用其他方法,但测试。

共有1个答案

慎建本
2023-03-14

您的控制器方法和类应该如下所示

@Controller
public class Controller {

 @RequestMapping(value="/save", method=RequestMethod.POST")
 public ModelAndView save(Person person){
  //save person

 return new ModelAndView("your url where you want to redirect after saing person");
 }
}
 类似资料:
  • 因此,在我的Javascript中,我使用的是表单序列化,输出是正确的 (issubmit=1) 当我试图将其传递给我的控制器时,我什么也得不到,。我做错了什么? Jquery: 控制器:

  • 我的问题:有一个简单的超文本标记语言表单,操作="/myController"。我需要将表单数据发送到我的控制器,然后从那里我需要向外部控制器发送另一个POST。 我的Spring控制器看起来像这样: 我需要将表单数据传递给我的控制器,它应该将表单数据进一步发送到“urlPath”并接收响应。我需要操纵这个响应并返回一个结果。我的问题是,如何在不操纵请求的情况下进一步发送表单数据? 提前感谢。

  • 我正在尝试获取一个将列表从 JSP 传递到控制器的示例以工作: http://viral Patel . net/blogs/spring-MVC-multi-row-submit-Java-list/ 这个例子的问题是我没有让JSP/WEB content/we b-INF/JSP/add _ contact . JSP工作。他有一句台词: 我得到varstatus变量的错误。他从哪里得到这个变

  • 我在这里遵循Spring MVC教程:http://www.tutorialspoint.com/spring/spring_mvc_form_handling_example.htm我也不明白数据是如何从JSP传递到控制器的。 我想我理解数据是如何从控制器传递到JSP的,但是在用户在JSP上编辑表单之后,数据是如何传递到控制器的呢? 在控制器中:公共字符串addStudent(@ModelAtt

  • 我在建一个拉威尔的网站。我希望提交的表单数据运行查询,并将结果插入表格式。我正在使用oracle DB,并已将其连接到Laravel。另外,我已经创建了表单,查询结果正确。我不能做的是将结果成功地传递到表中。 我的文件如下: > Routes.php(或web.php较新的laravel版本): 搜索。刀身php(带有post方法的表单) 我的控制器(NewController.php)运行查询。

  • 如何在JSP中分别显示id、txtfile和语句?如何将arraylist从servlet传递到JSP。 JSP:如何编辑我的JSP。我的JSP出现错误: 类型安全:未经检查的objectto arraylist强制转换