![](/img/trans.png)
[英]Spring MVC & JSP: How to pass a parameter from the controller to JSP?
[英]Spring mvc : How to pass the form data from jsp to controller
假設我在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>
和人類
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
}
}
這可能嗎?或者我需要添加一些代碼才能完成這項工作?我正在使用Spring MVC 4.0.3。 提前致謝。 :)
編輯:我嘗試了@ModelAttribute但出現錯誤400。嘗試使用@RequestBody但出現錯誤415。是否可以不使用注釋?
編輯:控制器實現
@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");
}
}
除了測試外,我沒有其他問題。
您的Controller方法和類應像這樣
@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");
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.